184월/23

ssh sftp 상위 폴더 접근제한 (chroot)

# vi /etc/ssh/sshd_config PermitRootLogin yes #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp Match User testuser ChrootDirectory /home/engineer/test ForceCommand internal-sftp X11Forwarding no AllowTCPForwarding no # service sshd restart chroot디렉토리 설정한 /home/engineer/test 는 755 권한 chroot와 상위디렉토리는 chown root:testuser test 쓰기권한이 필요하면 /home/engineer/test/쓰기권한폴더 생성하도록 # tail -f /var/log/secure fatal: bad ownership or modes for chroot directory “/home/engineer/test” [postauth] 오류뜨면 소유자와 755권한인지 체크해볼것

124월/23

unity android build 이슈 모음

unity 프로젝트 진행시 반복적 & 사소한 문제들을 모아두자 Google Play Games Plugin for Unity v11.01 쓰면 안됨 Login Cancelled 무한 발생, 이것때문에 시간낭비 엄청났음 v10.14 https://github.com/playgameservices/play-games-plugin-for-unity/releases/tag/v10.14 Duplicated classes when building for Android Assets > Play Services Resolver > Android Resolver > Delete Resolved Libraries 이래도 안되면 Assets/Plugins/Android 디렉토리 날려버려 간혹 AndroidManifest.xml 중복되는 권한 체크 unityplayeractivity.java uses or overrides a deprecated api  Player Settings > Publishing Settings > custom gradle properties template 활성화 Assets/Plugins/Android/AndroidManifest.xml 에 아래 내용 추가 <meta-data android:name=”unityplayer.UnityActivity” android:value=”true” /> 또는! 그냥 멍청하게 keystore 패스워드 틀린 경우임 android.enableR8 관련 Assets/Plugins/Android/gradleTemplate.properties 추가 android.enableR8=false 아니면 keystore 잘못된거 아닌가 체크 Duplicate class androidx.annotation.AnimRes found in modules androidx.annotation.annotation 오래된 jars 제거 Assets>Plugins>Android 하위 확인 이래도 안되면 Assets/Plugins/Android 디렉토리 날려버려 1번 항목 한번더 ClassNotFoundException:com.google.android.gms.games.* Publishing Settings > custom proguard file 활성화 proguad설정 파일에 아래 내용 추가 -keep class com.google.android.gms.games.leaderboard.** { *; } -keep class com.google.android.gms.games.snapshot.** { *; } -keep class com.google.android.gms.games.achievement.** { *; } -keep class com.google.android.gms.games.event.** { *; } -keep class com.google.android.gms.games.stats.** { *; } -keep class com.google.android.gms.games.* { *; } -keep class com.google.android.gms.common.api.ResultCallback { *; } -keep class com.google.android.gms.signin.** { *; } -keep class com.google.android.gms.dynamic.** { *; } -keep class com.google.android.gms.dynamite.** { *; } -keep class com.google.android.gms.tasks.** { *; } -keep class com.google.android.gms.security.**더보기…

014월/22

google ad manager report lib 작업 메모 (php)

ad manager 리포트를 csv로 수동 저장해서 확인하는… 잡일을 자동화 하도록 한다. 자세한 설명은 https://github.com/googleads/googleads-php-lib composer 설치 curl -sS https://getcomposer.org/installer | sudo php — –install-dir=/usr/local/bin/ symbolic link : sudo ln -s /usr/local/bin/composer.phar /usr/local/bin/composer unzip 설치 yum install unzip OAuth2 refreshToken 준비 Client ID 생성 https://console.developers.google.com/iam-admin/projects 에서 ‘프로젝트 만들기’ 프로젝트 선택 > 설정 메뉴 > 탐색메뉴 클릭 > API 및 서비스 > 사용자 인증 정보 사용자 인증정보 만들기 > OAuth 클라이언트 ID 클릭 어플리케이션 유형 : 웹 어플리케이션 선택 승인된 리디렉션 URI : https://developers.google.com/oauthplayground 생성된 client id 등등 모두 메모해두고 Refresh Token 생성 https://developers.google.com/oauthplayground 접속 우측상단 설정 톱니 클릭 > Use your own OAuth credentials 선택 아까 메모해둔 client id, secret 입력 후 close 좌측 step1 항목에서 ad manager 선택해주고 Authorize API’s 클릭 계정 선택 step2에 authorization code 가 생성되고 Exchage authorization code for tokens 클릭 refresh token, access token 생성됨을 확인 home / adsapi_php.ini 업로드 & 수정 [AD_MANAGER], [OAUTH2] 항목 모두 입력 googleads-php-lib 설치 https://github.com/googleads/googleads-php-lib 수동으로 올려버리기 업로드 후 composer 설정 파일 있는곳에서 composer install ㄱㄱ 구미에 맞는 예제를 보고 구현

014월/22

php 7.3 migration on CentOS7

php 7.3 Remi repository 추가 sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm sudo yum -y install epel-release yum-utils 이전버전 repo disable sudo yum-config-manager –disable remi-php72 sudo yum-config-manager –enable remi-php73  php 설치 sudo yum -y install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json 확인 php -v 필요한 확장 설치 sudo yum install php-<entension>

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더보기…