232월/22

cocos2d-x 4.0 버전업에 따른 정리

사전 준비 사항 python 2.7.18 설치 (버전 3.x 불가) https://www.python.org/downloads/release/python-2718/ Path등록 (c:\python27) android-sdk ANDROID_SDK_ROOT C:\Users\…\AppData\Local\Android\Sdk ant ANT_ROOT c:\apache-ant-1.10.12 jdk11 JAVA_HOME c:\java\jdk-11.0.14\bin ndk NDK_ROOT c:\android-ndk-r23b cmake 설치 https://cmake.org/download/ cocos2d-x 4.0 다운로드 https://www.cocos.com/en/cocos2dx  setup c:\cocos2d-x-4.0>python setup.py 필요에 따른 확장라이브러리 설치 c:\cocos2d-x-4.0>download-deps.py 프로젝트 생성 cocos new helloworld -p kr.co.bluebee.helloworld -l cpp cmake로 vs솔루션 생성 c:\cocos2d-x-4.0\projects\helloworld\proj.win32>cmake .. -G “Visual Studio 15 2017” -A Win32 helloworld.sln 생성된것 확인하고, visual studio로 작업

131월/22

ubuntu golang

sudo apt-get install golang-go 또는 1. go tarball 다운로드 wget https://dl.google.com/go/go1.17.6.linux-amd64.tar.gz 2. tarball 체크섬 sha256sum go1.17.6.linux-amd64.tar.gz 확인 231654bbf2dab3d86c1619ce799e77b03d96f9b50770297c8f4dff8836fc8ca2 3. 추출 sudo tar -C /usr/local -xvf go1.17.6.linux-amd64.tar.gz 4. path 설정 #~/.profile export GOROOT=/usr/local/go export GOPATH=$HOME/go export GOBIN=$GOPATH/bin export PATH=$GOROOT/bin:$GOBIN:$PATH shell 세션 로드 source ~/.profile 5. 설치 확인 go version 6. workspace는 기본적으로 $HOME/go mkdir ~/go 7. mvc편리하게 revel 설치ㄱㄱ go get github.com/revel/revel go get github.com/revel/cmd/revel go get github.com/bradfitz/gomemcache/memcache go get github.com/garyburd/redigo/redis go get github.com/patrickmn/go-cache 8. 테스트 revel run -a project

175월/21

maven central에 sdk 등록

자꾸 까먹어서 여따 적어두도록 한다. 나의 라이브러리들은 모두 jcenter (bintray)에 올라가 있는 상태이다. 그런데 왠일, jcenter 종료 소식이 들려왔다. 그래서 maven으로 마이그레이션 하라고 권고하고 있다. 이제 더이상 build.gradle에 jcenter는 필요없다. 삭제.. jcenter를 제거해서 기존의 라이브러리에서 오류가 발생한다면 https://search.maven.org 에서 검색해서 적당한 버전과 종류로 변경해주자.   나의 라이브러리를 maven으로 이사한다. github repository는 있을 것이고, jira account를 먼저 생성해주자. https://issues.sonatype.org/ 이곳에서..   그 후 issue를 하나 만들어준다. summary : 대충 라이브러리 제목 써주고 description : 대충 라이브러리 내용.. attachment : 넘어가고 group id : io.github.xxx 형태로 그룹아이디 넣어주고 (더이상 com.github.xxx는 안된다) project url, scm url : 내 github 참고해서 넣어주고 already synced to central : central에 싱크되어있는게 없으니까 no 선택 이렇게 이슈를 만들어 둔다.   그럼 담당자가 소유권 확인차 OSSRH-11111 리파지토리를 깃에 만들라고 한다. 그러면 준비 끝이고, 스튜디오에서 릴리즈 업로드 쌔리면 > gradlew 모듈명:publishReleasePublicationToSonatypeRepository   Central sync is activated for io.github.xxx. After you successfully release, your component will be published to Central https://repo1.maven.org/maven2/, typically within 10 minutes, though updates to https://search.maven.org can take up to two hours. 릴리즈 성공하면 10분후 리파지토리 확인 가능할것이고, 2시간정도 후에는 메이븐 검색도 될거라고 한다. https://repo1.maven.org/maven2/io/github/xxxx/ 내 repository가 만들어진다. https://s01.oss.sonatype.org 로그인해보면 내 리파지토리도 보인다. 만약 안되면 여기서 stop했다가 릴리즈

115월/21

[golang] Buffalo framework for windows

Buffalo framework의 windows 10 설치를 위해서는 NPM, GCC, PYTHON2가 사전에 설치되어 있어야 한다. go는 당연히 설치되어있어야 하고..   1. 우선 NPM은 Node.js를 설치해주면 될일이다. https://nodejs.org/en/download/ LTS 64bit는 설치해준다. 설치 후 > npm install node-sass -g > npm install -g node-gyp > npm install –global windows-build-tools   2. GCC는 https://jmeubank.github.io/tdm-gcc/download/ tdm64-gcc-x.x.x.exe 다운로드 & 설치 MinGW Command Prompt 실행 > go get -u github.com/gobuffalo/buffalo/buffalo   3. PYTHONE2는 https://www.python.org/downloads/release/python-2718/ 설치창에 Add python.exe to Path를 활성화 해주자.   4. 마지막으로 git 설정을 확인해본다. PowerShell > git config –list user.email과 user.name 설정이 안되어있다면 추가해준다. > git config –global user.email “jakeyucosmos@gmail.com” > git config –global user.name “JakeYuCosmos”   5. 이제 buffalo 프로젝트를 생성해본다. > cd $GOPATH/src/github.com/$USER/ > buffalo new testProj   Congratulations! Your application, testProj, has been successfully built! 마지막에 저런 INFO 메세지가 확인되면 프로젝트 생성이 성공한것   그러면 이제 바로 브라우저에서 확인해봐야겠다. > buffalo dev localhost:3000 을 주소창에 입력해서 확인 끝   buffalo dev 는 개발자에게 아주 유용하다. 수정 후 save하는 즉지 rebuild가 되고 웹서버 재시작 필요없이 즉시 결과를 확인할 수 있다. app.go 저장시 바로 Rebuild되고 서버 자동반영

285월/20

php7 마이그레이션 대체

mysql_query(query) => mysqli_query(connection, query) mysql_fetch_assoc => mysqli_fetch_assoc mysql_fetch_array => mysqli_fetch_array mysql_num_rows => mysqli_num_rows mysql_affected_rows() => mysqli_affected_rows(connection) mysql_data_seek => mysqli_data_seek   ereg(pattern, source) => preg_match(/pattern/, source)  

144월/20

JCenter(Bintray) 배포 방법

Android Module을 개발 완료하였다면 배포방안이 필요하다. Bintray에 업로드를 하고 JCenter를 연결하여 해결할 수 있다. 그렇게 되면 아래와같이 dependencies 항목에 추가할 수 있게 된다. dependencies { implementation ‘kr.co.paep:paep-sdk:1.0.1’ } https://bintray.com/ 에 회원가입을 한다. open source로 가입하도록 한다. repository를 하나 생성해준다. 이름을 명시해주고, Type을 Maven 으로 선택하였다. 우측상단의 프로필을 선택하여 Edit Profile에 접속하면 API Key를 얻을 수 있다. 기록해두자. 안드로이드 스튜디오에서 gradle 작업을 진행한다. project build.gradle buildscript { repositories { jcenter() } dependencies { classpath ‘com.jfrog.bintray.gradle:gradle-bintray-plugin:1.+’ classpath ‘com.github.dcendents:android-maven-gradle-plugin:2.1’ } } module build.gradle ext { bintrayRepo = ‘paep’ bintrayName = ‘paep-sdk’ publishedGroupId = ‘kr.co.paep’ libraryName = ‘paep-sdk’ artifact = ‘paep-sdk’ libraryDescription = ‘PAEP adx library’ siteUrl = ‘https://github.com/phaserep/paep-android-sdk’ gitUrl = ‘https://github.com/phaserep/paep-android-sdk.git’ libraryVersion = ‘1.0.1’ developerId = ‘jakeyu’ // Maven plugin uses this. I don’t know if it needs to be anything special. developerName = ‘Jake Yu’ developerEmail = ‘jake@phaserep.com’ licenseName = ‘The MIT License (MIT)’ licenseUrl = ‘https://opensource.org/licenses/MIT’ allLicenses = [“MIT”] } android { } dependencies { } apply plugin: ‘com.github.dcendents.android-maven’ group = publishedGroupId // Maven Group ID for the artifact install { repositories.mavenInstaller { // This generates POM.xml with proper parameters pom { project { packaging ‘aar’ groupId publishedGroupId artifactId artifact // Add your description here name libraryName description libraryDescription url siteUrl더보기…

024월/20

httpd 프로세스 누적 처리

httpd 프로세스가 누적되는 경우가 종종 있다. 특히 워드프레스.. 음 안쓰기도 뭐하고.. 무거운 워드프레스를 다 해집기 보다는.. 그냥 재시작 처리를 해두는게 나을지도 #!/bin/sh while ( true ) ; do if [ “`ps aux | grep httpd | wc -l`” -ge “50” ] ; then systemctl restart httpd date >> /home/engineer/shell/apache_auto_restart.log fi sleep 10 done 프로세스 수량 50은.. 봐가면서 변경

1012월/19

bootstrap datepicker language, format 설정

언어 설정 가이드 : https://bootstrap-datepicker.readthedocs.io/en/stable/i18n.html 한국어js : https://github.com/uxsolutions/bootstrap-datepicker/blob/master/dist/locales/bootstrap-datepicker.ko.min.js <script src=”/assets/js/bootstrap-datepicker.ko.min.js” charset=”UTF-8″></script> <script src=”/assets/js/bootstrap-datepicker.js” type=”text/javascript”></script> $(‘#date1’).datepicker({ format: ‘yyyy-mm-dd’, language: “ko” }

1311월/19

php 로그인, 크롤링 by Snoopy

간혹 업체의 report api가 구비되지 않아서 크롤링을 한다거나, 주기적인 업데이트를 위해 크롤링이 필요한 경우가 있다. 그와중에 로그인 후 크롤링을 할 경우까지 종종 등장한다. 이때 오래되었으나 snoopy 라이브러리를 이용하면 좋다. Snoopy download https://sourceforge.net/projects/snoopy/ 바로 import하여 사용한다. <?php require_once(‘lib/Snoopy.class.php’); $snoopy = new Snoopy; $snoopy->agent = “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)”; //login $loginUri = ‘http://www.bluebee.co.kr/loginTest.php’; $snoopy->httpmethod = “POST”; $auth[‘id’] = ‘bluebee’; $auth[‘password’] = ‘1234’; $snoopy->submit($loginUri, $auth); $snoopy->setcookies(); //로그인에 쿠키를 사용하는 경우가 있으니 쿠키정보를 저장 $loginResult = json_decode($snoopy->results); $report_data = array(); if($loginResult->{‘ret’} != “ok”) { echo ‘Login 실패!’; exit; } else { //리포트 데이터 크롤링 $reportUri = ‘http://www.bluebee.co.kr/reportTest.php’; $snoopy->httpmethod = “POST”; $report[‘sdate’] = ‘2019-11-01’; $report[‘edate’] = ‘2019-11-13’; $snoopy->submit($reportUri, $report); preg_match(‘/<tr class=”reportR”>(.*?)<\/tr>/is’, $snoopy->results, $result_report_tr); if(sizeof($result_report_tr) > 1) { preg_match_all(‘/<td[^>]*>(.*?)<\/td>/is’, $result_report_tr[1], $result_report_td); /*데이터 정리*/ } } ?> 로그인이 필요한 경우 간편하게~ 대충 이런 형태로 간단하게 뽑아낼 수 있겠다.   오류 발생 대처 방법 PHP Deprecated: The each() function is deprecated. php버전에 따라 오류발생 가능 Snoopy.class.php 의 each 관련 사항을 모두 foreach로 수정 예) while (list($key, $val) = each($links[2])) { => foreach($links[2] as $key => $val) { 그외 딱히 이슈될건 없다.