<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Go on James's Devlog</title><link>https://coolishbee.github.io/devlog/tags/go/</link><description>Recent content in Go on James's Devlog</description><generator>Hugo -- gohugo.io</generator><language>ko-KR</language><lastBuildDate>Tue, 13 Oct 2026 09:00:00 +0900</lastBuildDate><atom:link href="https://coolishbee.github.io/devlog/tags/go/index.xml" rel="self" type="application/rss+xml"/><item><title>Unity Editor Google 인증을 위한 Go Cloud Functions 개발</title><link>https://coolishbee.github.io/devlog/posts/go/unity-editor-google-oauth-server/</link><pubDate>Tue, 13 Oct 2026 09:00:00 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/go/unity-editor-google-oauth-server/</guid><description>Unity Editor에서 Google 서비스 접근에 필요한 OAuth 토큰을 발급·갱신하고, 데이터 테이블과 로컬라이제이션 도구에서 사용할 수 있도록 구성한 인증 도구 개발 기록.</description></item><item><title>Go Crawler Notification: 웹 콘텐츠 변경 감지 및 알림 도구 개발기</title><link>https://coolishbee.github.io/devlog/posts/go/go-crawler-notification/</link><pubDate>Fri, 04 Sep 2026 14:00:00 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/go/go-crawler-notification/</guid><description>여러 SDK의 릴리즈 노트를 자동으로 확인하고 Slack으로 업데이트를 받아보기 위해 만든 도구. Huginn을 Go로 옮긴 클론을 참고해 AI 에이전트로 개발한 과정과 주요 기능을 소개한다.</description></item><item><title>acra 사용법</title><link>https://coolishbee.github.io/devlog/posts/android/acra-usage/</link><pubDate>Mon, 16 Jan 2023 01:56:38 +0900</pubDate><guid>https://coolishbee.github.io/devlog/posts/android/acra-usage/</guid><description>&lt;p&gt;런타임 방식으로써 크래시발생시 acra http API 를 사용하는 방법 가이드.&lt;/p&gt;
&lt;h2 id="테스트-환경"&gt;테스트 환경&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;com.android.tools.build:gradle:4.0.1&lt;/li&gt;
&lt;li&gt;ACRA Version 5.7.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="제공되는-기능"&gt;제공되는 기능&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Http: 크래시리포트를 rest api 로 송신.&lt;/li&gt;
&lt;li&gt;Email: 이메일주소로 크래시리포트 발송.&lt;/li&gt;
&lt;li&gt;Dialog: 크래시 발생시 다이얼로그 이벤트.&lt;/li&gt;
&lt;li&gt;Notification: 크래시 발생시 푸쉬알람.&lt;/li&gt;
&lt;li&gt;Toast: 크래시 발생시 토스트 메시지.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="설정"&gt;설정&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;컴파일 방식: annotation 을 이용하여 미리 설정정보를 셋팅하는 방식이다.(AndroidManifest.xml 필수)&lt;/li&gt;
&lt;li&gt;런타임 방식: 모든 설정정보는 API 소스코드로 작성하는 방식이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="example"&gt;Example&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;public&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;class&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;MainActivity&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;extends&lt;/span&gt; AppCompatActivity {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;@Override&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;protected&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;onCreate&lt;/span&gt;(Bundle savedInstanceState) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;super&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;onCreate&lt;/span&gt;(savedInstanceState);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; setContentView(R.&lt;span style="color:#a6e22e"&gt;layout&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;activity_main&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Log.&lt;span style="color:#a6e22e"&gt;d&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;MainActivity&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;onCreate&amp;#34;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CoreConfigurationBuilder builder &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; CoreConfigurationBuilder(&lt;span style="color:#66d9ef"&gt;this&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; builder.&lt;span style="color:#a6e22e"&gt;setBuildConfigClass&lt;/span&gt;(BuildConfig.&lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;).&lt;span style="color:#a6e22e"&gt;setReportFormat&lt;/span&gt;(StringFormat.&lt;span style="color:#a6e22e"&gt;JSON&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; builder.&lt;span style="color:#a6e22e"&gt;getPluginConfigurationBuilder&lt;/span&gt;(HttpSenderConfigurationBuilder.&lt;span style="color:#a6e22e"&gt;class&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setUri&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;http://192.168.12.10:55000/send&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setHttpMethod&lt;/span&gt;(HttpSender.&lt;span style="color:#a6e22e"&gt;Method&lt;/span&gt;.&lt;span style="color:#a6e22e"&gt;POST&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setBasicAuthLogin&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;james&amp;#34;&lt;/span&gt;) &lt;span style="color:#75715e"&gt;//backend htpasswd 설정필요&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setBasicAuthPassword&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#34;1234&amp;#34;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .&lt;span style="color:#a6e22e"&gt;setEnabled&lt;/span&gt;(&lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ACRA.&lt;span style="color:#a6e22e"&gt;DEV_LOGGING&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ACRA.&lt;span style="color:#a6e22e"&gt;init&lt;/span&gt;(getApplication(), builder);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;throw&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; NullPointerException();
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="문서"&gt;문서&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ACRA/acra" target="_blank" rel="noopener"&gt;ACRA/acra&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ACRA/acra/wiki" target="_blank" rel="noopener"&gt;API Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ACRA/acra/wiki/Examples" target="_blank" rel="noopener"&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id="acra-go-사용법"&gt;acra-go 사용법&lt;/h1&gt;
&lt;p&gt;안드로이드 ACRA 을 위한 백엔드 서버.&lt;/p&gt;</description></item></channel></rss>