Javascript 배열 정렬하는 방법 sort()

Progmming/Javascript|2018. 12. 17. 14:13
반응형

Javascript 배열 정렬 샘플 코드 



기본 사용법 


Sorting ascending // 오름차순 정렬

<script>
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a-b});
for(i=0;i<points.length;i++)
{
	document.write(points[i]+",");
}
</script>


 Sorting descending // 내림차순 청렬

<script>
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b-a});

for(i=0;i<points.length;i++)
{
	document.write(points[i]+",");
}
</script>



적용 샘플

<!doctype html> <html lang="en"> <head> <script src="//code.jquery.com/jquery-1.7.2.js"></script> </head> <body> <h1>DIV sorting</h1> <input type="button" value="Add" id="btnAdd" /> <div id="starting_divs"> <div class="item" data-order="100"> <table> <tr> <td>STD</td> <td>100</td> </tr> </table> </div> <div class="item" data-order="50"> <table> <tr> <td>STD</td> <td>50</td> </tr> </table> </div> <div class="item" data-order="500"> <table> <tr> <td>STD</td> <td>500</td> </tr> </table> </div> <div class="item" data-order="150"> <table> <tr> <td>STD</td> <td>150</td> </tr> </table> </div> </div> <script type="text/javascript"> function fnSort() { var $sorted_items, getSorted = function(selector, attrName) {                          return $( $(selector).toArray().sort(function(a, b){ var aVal = parseInt(a.getAttribute(attrName)), bVal = parseInt(b.getAttribute(attrName)); return aVal - bVal; }) ); }; $sorted_items = getSorted('#starting_divs .item', 'data-order').clone(); $('#starting_divs').html( $sorted_items ); } $("#btnAdd").on("click",function(){ var order = (Math.random()*10000).toString().substring(0,3); $("<div class=\"item\" data-order=\""+order+"\"> \ <table><tr><td>DLX</td><td>"+order+"</td></tr></table> \ </div>").insertAfter(".item:last"); fnSort(); }); </script> </body> </html>


데이터형에 따라서 문자열일 경우 비교/리턴 하는부분에서 아래와 같이 변경한다.

<script>
return $(
	$(selector).toArray().sort(function(a, b){
		var aVal = a.getAttribute('sort-name'), bVal = b.getAttribute('sort-name');
		return aVal.localeCompare(bVal);
	})
</script>


복합 정렬일 경우 아래와 같이 || 조건으로 비교한다.

<script> return $( $(selector).toArray().sort(function(a, b){ var aint = parseInt(a.getAttribute('sort-int')), bint = parseInt(b.getAttribute('sort-int')), aName = a.getAttribute('sort-name'), bName = b.getAttribute('sort-name'); return aint - bint || aName.localeCompare(bName); }) ); </script>


w3schools Link : https://www.w3schools.com/js/js_array_sort.asp



최종 사용하려고 했던 함수.

<script type="text/javascript">

	function fnSort(sortBy)
	{
 
		$(".btn.btn-white").removeClass("active");

		var $sorted_items,
			getSorted = function(selector) {
				switch(sortBy){
					case "AVAILABLE" :
						$(".btn.btn-white").eq(1).addClass("active");
						return $(
							$(selector).toArray().sort(function(a, b){
								var aStatus = a.getAttribute('sort-status'),
								bStatus = b.getAttribute('sort-status'),
								aPrice = parseInt(a.getAttribute('sort-price')),
								bPrice = parseInt(b.getAttribute('sort-price')),
								aName = a.getAttribute('sort-name'),
								bName = b.getAttribute('sort-name');
								return aStatus.localeCompare(bStatus) || aPrice - bPrice || aName.localeCompare(bName);
							})
						);
						break;
					case "PRICE" :
					case "LOWPRICE" :
						$(".btn.btn-white").eq(2).addClass("active");
						return $(
							$(selector).toArray().sort(function(a, b){
								var aPrice = parseInt(a.getAttribute('sort-price')),
								bPrice = parseInt(b.getAttribute('sort-price')),
								aName = a.getAttribute('sort-name'),
								bName = b.getAttribute('sort-name');
								return aPrice - bPrice || aName.localeCompare(bName);
							})
						);
						break;
					case "HIGHPRICE" :
						$(".btn.btn-white").eq(3).addClass("active");
						return $(
							$(selector).toArray().sort(function(a, b){
								var aPrice = parseInt(a.getAttribute('sort-price')),
								bPrice = parseInt(b.getAttribute('sort-price')),
								aName = a.getAttribute('sort-name'),
								bName = b.getAttribute('sort-name');
								return bPrice - aPrice || aName.localeCompare(bName);
							})
						);
						break;
					case "RATING" :
					case "GRADE" :
						$(".btn.btn-white").eq(4).addClass("active");
						return $(
							$(selector).toArray().sort(function(a, b){
								var aGrade = parseInt(a.getAttribute('sort-grade')),
								bGrade = parseInt(b.getAttribute('sort-grade')),
								aName = a.getAttribute('sort-name'),
								bName = b.getAttribute('sort-name');
								return aGrade - bGrade || aName.localeCompare(bName);
							})
						);
						break;
					case "HENM" :
						$(".btn.btn-white").eq(5).addClass("active");
						return $(
							$(selector).toArray().sort(function(a, b){
								var aVal = a.getAttribute('sort-name'), bVal = b.getAttribute('sort-name');
								return aVal.localeCompare(bVal);
							})
						);
						break;
					default :
						$(".btn.btn-white").eq(5).addClass("active");
						return $(
							$(selector).toArray().sort(function(a, b){
								var aVal = a.getAttribute('sort-name'), bVal = b.getAttribute('sort-name');
								return aVal.localeCompare(bVal);
							})
						);
						break;
				}
			};

		$sorted_items = getSorted('#starting_divs .item').clone();

		$('#starting_divs').html( $sorted_items );
 
	}
</script>


댓글()

[vb.net] 정해진 시간에 지정 URL로 브라우저 실행하는 프로그램

Progmming/.Net|2018. 6. 19. 16:38
반응형

얼마전부터 새로이.. 어플리케이션 공부를 시작했습니다.


어딘가 특별나게 써먹을 목적으로 하는건 아니고 


그때 그때 필요한게 있으면 만들어서 써볼까하는 마음으로요.




10원짜리 툴 첫번째.




개발 배경 


지정 시간에 오픈하는 핫딜의 경우 까먹기 쉬워서


알람도 맞추고 했으나 결국은 로그인하다가 시간 까먹고 끝..


그래서 지정된 시간에 브라우저 열어주면 좋겠다 싶어서 만들었습니다.


한때는 https://time.navyism.com/ 네이비즘 사이트도 애용했으나 


그 기능을 합쳐서 도전.







사용법 


1. 핫딜 오픈 시간 입력.


2. 몇분전에 알림 받을 지 선택 ( 기본 3분전 )


3. 핫딜 URL 입력 길어도 됩니다. 그냥 몽땅 때려넣음.


4. 시작



시작되면 몇초가 남았는지..나오고 0초가 되면 브라우저가 실행됩니다.



64Bit OS가 기본이라 생각(?)하고 브라우저는 


C:\Program Files (x86)\Google\Chrome\Application\chrome.exe 


C:\Program Files\Internet Explorer\iexplore.exe


위 2개의 경로를 확인하여 실행합니다.


윈도우 기본 브라우저 경로를 어떻게 가져와야 하는지 모르겠네요..


-_-ㅎ.. 아시는분 팁좀 부탁드립니다.





각각의 실행 파일과 소스 파일를 첨부합니다.


HDA.exe


HDA.zip




ps. 개인적인 스터디와 재미 , 흥미로 인한 코딩이므로 무의미한 디스는 거부하겠습니다. 

반사!



적절한 조언은 감사히 받겠습니다 :)

댓글()

[ VB.net ] 특정 웹서버 시간 읽어오기

Progmming/.Net|2018. 6. 4. 14:14
반응형

핫딜 주소와 시간을 셋팅해서 


구매시에 도움을 주는 CS프로그램을 하나 만들어보려고 하는 중에 정리.


1분 1초가 중요한 거라 해당 웹 서버의 시간을 읽어와서 처리하는 샘플 코드.


요점은 WebResponse의 해더에서 Date를 읽어와서 이용하는 것. 


아래는 인터파크의 웹서버 시간을 읽어오기 위한 코드.


   

Imports System.Net

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create("http://www.interpark.com"), HttpWebRequest)
        Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)

        Dim i As Integer
        While i < myHttpWebResponse.Headers.Count
            Console.WriteLine(ControlChars.Cr + "Header Name:{0}, Value :{1}", myHttpWebResponse.Headers.Keys(i), myHttpWebResponse.Headers(i))
            i = i + 1
        End While


        myHttpWebResponse.Close()

        myHttpWebRequest = Nothing
        myHttpWebResponse = Nothing

    End Sub
End Class



출력 결과 형태는 굵게 표시한 Date 를 이용하면 된다.


Header Name:Age, Value :182


Header Name:Vary, Value :Accept-Encoding, User-Agent


Header Name:Content-Length, Value :2935


Header Name:Content-Type, Value :text/html


Header Name:Date, Value :Mon, 04 Jun 2018 05:15:04 GMT


Header Name:Last-Modified, Value :Wed, 28 Feb 2018 05:30:03 GMT


Header Name:P3P, Value :CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"


댓글()

PHP + Google Translate API 연동하기

Progmming/PHP|2018. 5. 4. 13:19
반응형

PHP + Google Translate API 연동하기



Google translate document site

https://cloud.google.com/translate/docs/?hl=ko



Google 에서 제공되는 샘플 소스

https://github.com/GoogleCloudPlatform/php-docs-samples/tree/master/translate


 

하지만 그냥 최소한의 코딩으로 처리를 하고자 했기 때문에..


php 함수를하나 만듬.


function translate($content) { $handle = curl_init(); curl_setopt($handle, CURLOPT_URL,'https://www.googleapis.com/language/translate/v2'); curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false); $data = array('key' => "API Key", 'q' => $content, 'source' => "ko", 'target' => "en"); curl_setopt($handle, CURLOPT_POSTFIELDS, preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', http_build_query($data))); curl_setopt($handle,CURLOPT_HTTPHEADER,array('X-HTTP-Method-Override: GET')); $response = curl_exec($handle); $responseDecoded = json_decode($response, true); $responseCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); curl_close($handle); return $responseDecoded['data']['translations'][0]['translatedText']; }


사용을 위해 신용카드 등록이 필요하지만 처음 등록 할 경우 300달러가 제공되니 참고해주세요.

댓글()

php 쿼리결과에 대한 결과 행이 있는지 여부, sqlsrv_has_rows / sqlsrv_num_rows

Progmming/PHP|2018. 4. 26. 11:02
반응형

mysql 을 오랜만에 사용할 기회가 있어서 처리중에...


데이터 갯수를 체크해야 했는데 mssql 에서 하던대로 count 해서 데이터 갯수를 체크하려고 했으나


sqlsrv_num_rows 함수를 이용하니 결과 값이 빈값이 찍히는 상황.


확인해보니 sqlsrv_num_rows 결과 값을 리턴 받기 위해서는 커서 타입을 지정해야함.


단순 쿼리 결과 값이 있는지 여부를 체크하는 함수가 있더라는..



sqlsrv_has_rows 


- 쿼리결과에 대한 결과 행이 있는지 여부 .  return : bool


php manual : http://php.net/manual/en/function.sqlsrv-has-rows.php


<?php


    $server 
"serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName""UID"=>"username""PWD"=>"password" )
    $conn sqlsrv_connect$server$connectionInfo );

    $stmt sqlsrv_query$conn"SELECT * FROM Table_1");

    if (
$stmt) {
       
$rows sqlsrv_has_rows$stmt );
       if (
$rows === true)
          echo 
"There are rows. <br />";
       else 
          echo 
"There are no rows. <br />";
    }
?>




sqlsrv_num_rows

- 쿼리 결과에 대한 행의 갯수 .  
커서 타입을 SQLSRV_CURSOR_KEYSET 또는  SQLSRV_CURSOR_STATIC 으로  
지정해주어야 결과 값을 가져올 수 있음.


<?php
    $server 
"serverName\sqlexpress";
    $connectionInfo = array( "Database"=>"dbName""UID"=>"username""PWD"=>"password" );
    $conn sqlsrv_connect$server$connectionInfo );

    $sql "SELECT * FROM Table_1";
    $params = array();
    $options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
    $stmt sqlsrv_query$conn$sql $params$options );

    $row_count sqlsrv_num_rows$stmt );
   
    if (
$row_count === false)
       echo 
"Error in retrieveing row count.";
    else
       echo 
$row_count;
?>

댓글()

Python3 - 기본적인 형태의 질의응답 가능한 텔레그램 봇 만드는 방법

Progmming/Python|2017. 9. 15. 04:34
반응형


키워드에 자동 응답하는 텔레그램 봇 만드는 방법



봇이면 봇 답게!! 정해진 키워드에 자동으로 응답하는 


텔레그램 봇을 만드는 방법입니다.



준비물 : 


파이썬이 설치된 PC 


텔레그램 봇 Token  


bothub.studio 회원 가입



1. 파이썬 다운로드 및 설치방법 포스팅




2. 텔레그램 봇 Token 얻는 방법


▼ 텔레그램에서 @BotFather 봇으로 자동 발급 됩니다.


/start 명령을 실행하면 전체 명령 메뉴얼이 보입니다.


/newBot 실행하면 봇 이름과 아이디를 입력하라고 하는데


반드시 아이디는 xxxxBot으로  끝나야 합니다.




이제 텔레그램 봇 Token 이 생성 되었다면 

자동응답에 사용될 키워드 및 답변에 대한 셋팅을 해야합니다.


회원 가입부터..


https://app.bothub.studio/register



▼ 간단한 회원 가입 후 로그인 합니다.


상단에 CREATE PROJECT 버튼을 눌러 프로젝트를 생성합니다.




▼ 프로젝트 이름을 입력하고 언어는 현재 파이썬밖에 선택이 안됩니다.



▼ 그리고 생성된 프로젝트에 Channels 메뉴를 선택합니다.




▼ 페이스북 메신져와 텔레그램 2 채널이 있는데

 

두 채널 모두 현재 연결되지 않은 상태로 Connect 버튼을 누르면 토큰을 입력해서


연결이 가능해집니다.




▼ 연결하고 나면 Connected 라고 뜨면서 성공한 것입니다.



▼ 프로젝트 리스트에 보면 Channels 에 연동된 것이 확인 됩니다.


상태도 온라인이네요.




▼ 다음은 실제로 키워드에 대해 자동응답될 메시지를 지정하려고 합니다.


프로젝트 리스트에서 Properties 메뉴를 선택합니다.





▼ Name 과 Value 값을 입력할 수 있는데


각각이 키워드와 그에 대한 입력값이라고 보면 됩니다.




먼저 기본적으로 명령어 노출 시 보여줄 keyword 라는 이름과 등록할 키워드들을 먼저 나열하여 등록합니다.


이때 키워드들의 구분자는 , 로 합니다.


다른 것으로 해도 되지만 추후 사용될 파이썬 코드에 , 로 되어있으니 그냥 쓰는게 편합니다.


Value 값에 입력되는 값들은 아래와 같습니다.



{"answer": "답변 내용", "title": "외부 링크 연결 이름", "link": "http://dev.uhoon.co.kr"}



3. 파이썬 코드 등록하기


▼ 윈도우 파워쉘이나 cmd 창에서 실행되는 명령어 입니다.


굵은 글씨로 표시된 부분이 실제 사용자가 입력한 내용입니다.


## 한 부분은 추가한 주석입니다.


Microsoft Windows [Version 10.0.14393]

(c) 2016 Microsoft Corporation. All rights reserved.


C:\Users\Administrator>pip install bothub-cli

##이것 저것 설치됨.


C:\Users\Administrator>bothub configure

Please enter your BotHut.Studio login credentials:

username: 사용자이름

password: 비밀번호

Connecting to server...

Identified. Welcome 사용자이름.


## 경로는 임의의 경로에 하셔도 됩니다. 지정한 경로로 기본 소스 파일이 설치됩니다.

C:\Users\Administrator\Documents>mkdir kays


C:\Users\Administrator\Documents>cd kays


C:\Users\Administrator\Documents\kays>bothub init

Initialize a new project.

Project name: 프로젝트이름

Creating project...

Initialize project template.

Download project template.

Project has created.


##채널을 추가합니다. 텔레그램 토큰 값이 필요합니다. Token 값은 잘 저장해두세요. 

C:\Users\Administrator\Documents\kays>bothub channel add 채널이름 --api-key=텔레그램 Token값

Added a channel 채널이름


## 채널 목록 확인 할 때 

C:\Users\Administrator\Documents\kays>bothub channel ls

+----------+

| Channel  |

+----------+

| 채널이름 |

+----------+


## 채널 삭제 할 때 

C:\Users\Administrator\Documents\kays>bothub channel rm 채널이름

Deleted a channel: 채널이름


## 수정된 파이썬 소스파일 업데이트 할 때  

C:\Users\Administrator\Documents\kays>bothub deploy

Make dist package.

Upload code.

Restarting container........

Project is deployed.

 




이렇게 여기까지 하면 텔레그램 봇 생성 및 자동 응답이 가능한 봇이 생성 됩니다.


업데이트 하기전에 기본 생성된 파이썬 소스 파일은 아래 소스로 대체 합니다.


기본적인 텍스트 문구는 수정이 가능하나 


파이썬 코드를 이해못하신 분들은 다른 부분은 수정하시면 안됩니다.


파이썬을 모르신다 해도 개발자 분들은 보면 금방 이해하실 수 있으실거에요.


https://bothub.studio/docs/bothub-sdk-python/#api-reference



bot.py




▼ 그리해서 만들어진 텔레그램 봇입니다.






호기심으로 웹 크롤링을 해보려고 엇그제부터 시작 한 파이썬이


텔레그램 봇으로 빠져서 이러고 있네요.


조만간 크롤링 관련 포스팅도 정리해서 올려보겠습니다.




많이 참고한 사이트 : 


https://www.clien.net/service/board/lecture/11168487


http://telegra.ph/telegram-token-06-12


https://medium.com/bothub-studio-ko/%EA%B0%84%EB%8B%A8%ED%95%9C-faq-%EC%B1%97%EB%B4%87-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-f65c17396348


그리고 자잘한 구글링.

댓글()

python3 - 파이썬 설치

Progmming/Python|2017. 9. 14. 14:48
반응형

파이썬 설치


어제부로 파이썬 스터디를 시작했습니다.


1차 목표는 웹 크롤링!!


우선 설치부터 해봅니다.




아래 사이트에서 파이썬 최신 버전으로 다운로드 및 설치


 https://www.python.org/downloads/




▼ 다운받은 파이썬 설치 파일은 아래와 같습니다.

( 포스팅 날짜 기준 3.6.2가 최신 버전이네요)



▼ 기본적으로 다른 설정을 바꿀 것은 없지만 

한가지 꼭 체크해야할 것이 Add Python 3.6 to PATH


어디 경로에서든 Python 명령어를 실행하기 위해 Windows PATH 경로 추가를 해야 하는데 

자동으로 추가하는 옵션이므로 반드시 체크하도록 합니다.






▼ 파이썬 설치가 완료되었습니다.

다른 옵션 없이 그냥 다음 다음...진행해서 완료 된 화면 입니다.




▼ 새로 설치된 파일들..





댓글()