" programming(으)로 태그된 글들"

POST로 JSON 전송후 node.js에서 처리하기

2020-01-31   //   alexken작성   //   기술  //  No Comments
주의사항 1: 서버에 전송할 때 HTTP 헤더에 “Content-Type: application/json” 반드시 설정할 것 2: JSON의 string 표기할때 이스케이프 처리해서라도 쌍따옴표로 사용할 것 3: bodyParser에서 JSON 사용을 명시할 것
var express = require('express');
var bodyParser = require('body-parser')
var app = express();
var port = process.env.PORT || 8000;

const usage = 'curl "localhost:8000/get?a=3&b=4" or\n' + 
              'curl -d "{\\"a\\":3,\\"b\\":4}" ' + 
              '-H "Content-Type: application/json" localhost:8000/post';

app.use(bodyParser.json());

app.get('/', function(req, res) {
    res.send(usage);
});

app.post('/', function(req, res) {
    res.send(usage);
});

app.get('/get', function(req, res) {
    res.send('' + (parseInt(req.query.a) + parseInt(req.query.b)));
});

app.post('/post', function(req, res) {
    res.send('' + (req.body.a + req.body.b));
});

app.listen(port);

장마대비 코드 수정

2016-07-05   //   alexken작성   //   기술  //  No Comments

가장 최근 게시글이 2014년 4월 글이다. 그래 뭐라도 좀 쓰자.

심각한 결정장애자로 구성된 팀원들이 매일 점심마다 엘리베이터타고 지하 1층까지 내려와서는 서로의 눈치만 살필뿐 어디가자 말하는 사람이 없이 한동안 멍하니 서있기만 한 상황이 싫어서 만든 웹앱이 “오늘의 밥집”이다.

상암동 누리꿈스퀘어 근무자만 사용가능한 앱이다.

img_1104

오늘같이 비가 퍼붓는 날은 건물 밖에 나갈 수 없으니 날씨에 따라 추천 밥집을 유동적으로 할 필요가 있겠다 싶어 현재 날씨 관련 OPEN API를 찾아서 적용하였다.

기준은 가장 쉬어 보이는 놈으로 해서 openweathermap.org 꺼로 정했다.

http://api.openweathermap.org/data/2.5/weather?q=Seoul,uk&appid=3427...

HTTP GET 메소드로 요청하면 JSON으로 반환해준다.

{
  "coord": {
    "lon": 127,
    "lat": 37.52
  },
  "weather": [
    {
      "id": 301,
      "main": "Drizzle",
      "description": "drizzle",
      "icon": "09n"
    },

    {
      "id": 701,
      "main": "Mist",
      "description": "mist",
      "icon": "50n"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 292.66,
    "pressure": 1012,
    "humidity": 88,
    "temp_min": 290.15,
    "temp_max": 296.15
  },
  "visibility": 10000,
  "wind": {
    "speed": 1.5,
    "deg": 320
  },
  "clouds": {
    "all": 90
  },
  "dt": 1467724800,
  "sys": {
    "type": 1,
    "id": 8519,
    "message": 0.0104,
    "country": "KR",
    "sunrise": 1467663409,
    "sunset": 1467716182
  },
  "id": 1846735,
  "name": "Chamsil",
  "cod": 200
}

여기서 weather[0] –> main 에 해당하는 문자열만 끄집어 내서 Rain, Storm … 이면 건물 밖 밥집은 제외토록 하였다.

function currWeather(){
    var xhr = new XMLHttpRequest();
    var curr = "Clear";
    xhr.onreadystatechange=function() {
        if(xhr.status == 200 && xhr.readyState==4)
            curr = JSON.parse(xhr.responseText).weather[0].main;
    }

    xhr.open('GET', 'http://api.openweathermap.org/data/2.5/weather?" + 
                "q=Seoul&appid=3427...',false);
    xhr.send();
    return curr;
}

[ruby2] (‘가’..’힣’).each{|x| print x}

2013-10-24   //   alexken작성   //   기술  //  No Comments

ruby라는 언어를 안건 1999년 이었지만, 줄곳 잊고 살다가 흥미를 가지고 배운것은 2008년 5월 이었다.

ruby 공부를 시작한지 2틀째 썼던 글인 (‘가’..’힣’).each{|x| print x}는 ruby 1.8 시절에 내부 문자열 소팅을 unicode 순이 아닌 utf-8로 인코딩된째 소팅한다고 푸념하는 글이었다.

그때 막연한 희망으로 ruby 2.0에서는 unicode 순으로 해줬으면 좋겠다고 썼던적이 있다.

ruby 2.0이 나왔는 지 알게된 계기도, 오늘 쓴 ruby 2.0.0에서 iconv 사용 불가에서 썼듯이 우연히 MacOSX 를 Mavericks로 바꾸면서 알게 되었다. 혹시나 하는 맘에 ruby 2.0에서 문자열 소팅이 개선되었는지 확인해 보니 정말 바뀌어 있었다.

5년전에 생각했던, ‘가’에서 ‘힣’까지 출력하는 ruby code는

('가'..'힣').each{|x| print x}

한줄이면 된다.

더이상 utf-8을 unicode로 디코딩해서 소팅하고, 다시 utf-8로 인코딩 안해도 되게 되었다. 혹시나 하고 찾아 보니 이런 글 이 있네.

ruby 2.0.0에서 iconv 사용 불가

2013-10-24   //   alexken작성   //   기술  //  1 Comment

이전에 만들어 두었던 나만을 위한 EPG가 동작을 하고 있지 않았다.

  • MacOSX 10.8(“Mountain Lion”)에 기본으로 설치된 ruby 버전은 1.8.7이었다.
  • 반면 MacOSX 10.9(“Mavericks”)에서 2.0.0으로 판올림 되었다.
  • 그 과정에서 iconv가 deprecated 되었다가 1.9.3부터는 아예 빠져 버렸다고 한다. 해결책은 iconv를 추가로 까는 방법도 있겠지만, deprecated한 취지 대로, string의 encode로 바꾸었다.

기존 iconv 사용 코드

string.encode로 변경한 새 코드