<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>머라카노?</title>
    <link>https://mrkn.tistory.com/</link>
    <description>[돈보다 재미를 찾는 비바라 개발자 올림]</description>
    <language>ko</language>
    <pubDate>Tue, 23 Jun 2026 01:54:30 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Vivara</managingEditor>
    <item>
      <title>[Java] - Java parseBytes2String 파일 사이즈 단위 변환</title>
      <link>https://mrkn.tistory.com/390</link>
      <description>&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;public static String parseBytes2String( long fileSize ) {
    Integer unit = 1024;
    
    if( fileSize &amp;lt; unit ){
      return String.format( &quot;(%d B)&quot;, fileSize );
    }
    
    int exp = (int) ( Math.log( fileSize ) / Math.log( unit ) );

    return String.format( &quot;(%.2f %sB)&quot;, fileSize / Math.pow( unit, exp ), &quot;KMGTPE&quot;.charAt( exp - 1 ) );
  }&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Java</category>
      <category>Java</category>
      <category>parse</category>
      <category>parseBytes2String</category>
      <category>toString</category>
      <category>자바</category>
      <category>파일사이즈</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/390</guid>
      <comments>https://mrkn.tistory.com/390#entry390comment</comments>
      <pubDate>Mon, 5 Oct 2020 14:53:01 +0900</pubDate>
    </item>
    <item>
      <title>[Observer] - 1.0.1 버전 업데이트</title>
      <link>https://mrkn.tistory.com/389</link>
      <description>&lt;p&gt;1. 배터리 온도 알림 기능 추가&lt;/p&gt;
&lt;p&gt;2. 설정 &amp;gt; 저장공간 관리 &amp;gt; 지금 데이터 전체 정리 기능 추가&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Screenshot_20190924-091326_Observer.jpg&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBLPH6/btqysN9Kg8k/kh2DYrSDlU8WmKBfmkbR80/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBLPH6/btqysN9Kg8k/kh2DYrSDlU8WmKBfmkbR80/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBLPH6/btqysN9Kg8k/kh2DYrSDlU8WmKBfmkbR80/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBLPH6%2FbtqysN9Kg8k%2Fkh2DYrSDlU8WmKBfmkbR80%2Fimg.jpg&quot; data-filename=&quot;Screenshot_20190924-091326_Observer.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Screenshot_20190924-091329_Observer.jpg&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5ys8P/btqyt5hycrL/d9hDqJYABvDGykGZk8e9vk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5ys8P/btqyt5hycrL/d9hDqJYABvDGykGZk8e9vk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5ys8P/btqyt5hycrL/d9hDqJYABvDGykGZk8e9vk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5ys8P%2Fbtqyt5hycrL%2Fd9hDqJYABvDGykGZk8e9vk%2Fimg.jpg&quot; data-filename=&quot;Screenshot_20190924-091329_Observer.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;Screenshot_20190924-091705_One UI Home.jpg&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boPzCu/btqywW4MGKZ/kVmoXy0W6eWOyfD8Li1BM1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boPzCu/btqywW4MGKZ/kVmoXy0W6eWOyfD8Li1BM1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boPzCu/btqywW4MGKZ/kVmoXy0W6eWOyfD8Li1BM1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboPzCu%2FbtqywW4MGKZ%2FkVmoXy0W6eWOyfD8Li1BM1%2Fimg.jpg&quot; data-filename=&quot;Screenshot_20190924-091705_One UI Home.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vB492/btqytsj0H5E/HCN3sBhu6QDIRI8ZfJreX1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vB492/btqytsj0H5E/HCN3sBhu6QDIRI8ZfJreX1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vB492/btqytsj0H5E/HCN3sBhu6QDIRI8ZfJreX1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvB492%2Fbtqytsj0H5E%2FHCN3sBhu6QDIRI8ZfJreX1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Observer</category>
      <category>Android</category>
      <category>Battery</category>
      <category>Observer</category>
      <category>PlayStore</category>
      <category>지방개발자</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/389</guid>
      <comments>https://mrkn.tistory.com/389#entry389comment</comments>
      <pubDate>Tue, 24 Sep 2019 09:19:37 +0900</pubDate>
    </item>
    <item>
      <title>[Observer] - 1.0.0 버전 업데이트</title>
      <link>https://mrkn.tistory.com/388</link>
      <description>&lt;p&gt;*&amp;nbsp;인터넷&amp;nbsp;권한을&amp;nbsp;요청하지&amp;nbsp;않기&amp;nbsp;때문에&amp;nbsp;개인&amp;nbsp;휴대폰에&amp;nbsp;모든&amp;nbsp;데이터가&amp;nbsp;저장됩니다&lt;br /&gt;*&amp;nbsp;앱&amp;nbsp;삭제&amp;nbsp;시&amp;nbsp;모든&amp;nbsp;데이터가&amp;nbsp;삭제됩니다&lt;br /&gt;*&amp;nbsp;배터리&amp;nbsp;절전모드&amp;nbsp;해제하셔야&amp;nbsp;정확한&amp;nbsp;데이터&amp;nbsp;수집이&amp;nbsp;가능합니다&lt;/p&gt;</description>
      <category>Observer</category>
      <category>Android</category>
      <category>Observer</category>
      <category>PlayStore</category>
      <category>안드로이드</category>
      <category>옵저버</category>
      <category>플레이스토어</category>
      <category>휴대폰</category>
      <category>휴대폰감시</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/388</guid>
      <comments>https://mrkn.tistory.com/388#entry388comment</comments>
      <pubDate>Thu, 1 Aug 2019 09:18:03 +0900</pubDate>
    </item>
    <item>
      <title>[Android] - 해당 앱 ( 앱 정보 페이지 ) intent</title>
      <link>https://mrkn.tistory.com/386</link>
      <description>&lt;p&gt;Intent intent = &lt;span&gt;new &lt;/span&gt;Intent()&lt;span&gt;;&lt;br /&gt;&lt;/span&gt;intent.setAction(Settings.&lt;span&gt;ACTION_APPLICATION_DETAILS_SETTINGS&lt;/span&gt;)&lt;span&gt;;&lt;br /&gt;&lt;/span&gt;Uri uri = Uri.&lt;span&gt;fromParts&lt;/span&gt;(&lt;span&gt;&quot;package&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;mContext&lt;/span&gt;.getPackageName()&lt;span&gt;, null&lt;/span&gt;)&lt;span&gt;;&lt;br /&gt;&lt;/span&gt;intent.setData(uri)&lt;span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;mContext&lt;/span&gt;.startActivity(intent)&lt;span&gt;;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Android Java</category>
      <category>Android</category>
      <category>intent</category>
      <category>안드로이드</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/386</guid>
      <comments>https://mrkn.tistory.com/386#entry386comment</comments>
      <pubDate>Tue, 28 May 2019 09:57:25 +0900</pubDate>
    </item>
    <item>
      <title>[Spring] - json 406 error</title>
      <link>https://mrkn.tistory.com/385</link>
      <description>&lt;p&gt;406 Error&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;pom.xml 에 아래 라이브러리 추가&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;dependency&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;groupId&amp;gt;org.codehaus.jackson&amp;lt;/groupId&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;artifactId&amp;gt;jackson-mapper-asl&amp;lt;/artifactId&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;version&amp;gt;1.9.13&amp;lt;/version&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/dependency&amp;gt;&lt;/p&gt;</description>
      <category>Java</category>
      <category>406</category>
      <category>ajax</category>
      <category>Java</category>
      <category>MVC</category>
      <category>spring</category>
      <category>springmvc</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/385</guid>
      <comments>https://mrkn.tistory.com/385#entry385comment</comments>
      <pubDate>Thu, 3 Jan 2019 15:23:15 +0900</pubDate>
    </item>
    <item>
      <title>[Spring] - @RequestParam 사용 / 400 Error</title>
      <link>https://mrkn.tistory.com/384</link>
      <description>&lt;p&gt;&lt;b&gt;public ModelAndView view( @RequestParam( value=&quot;idx&quot;, required=true, defaultValue=&quot;0&quot; ) int idx )&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;@RequestParam( value=&quot;idx&quot;, required=true, defaultValue=&quot;0&quot; )&lt;/b&gt;&lt;/p&gt;&lt;p&gt;required 필수 체크 ( true, false )&lt;/p&gt;&lt;p&gt;필수 값이 없을 경우 400 에러 출력&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;400에러는&amp;nbsp;&lt;/p&gt;&lt;p&gt;web.xml에서 인터셉트 가능&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;lt;error-page&amp;gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;lt;error-code&amp;gt;400&amp;lt;/error-code&amp;gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;lt;location&amp;gt;/WEB-INF/views/common/400.jsp&amp;lt;/location&amp;gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&amp;lt;/error-page&amp;gt;&lt;/b&gt;&lt;/p&gt;</description>
      <category>Java</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/384</guid>
      <comments>https://mrkn.tistory.com/384#entry384comment</comments>
      <pubDate>Thu, 13 Dec 2018 17:03:58 +0900</pubDate>
    </item>
    <item>
      <title>[Java] - Millisecond to time</title>
      <link>https://mrkn.tistory.com/383</link>
      <description>&lt;p&gt;private String getTimeStamp( long milliSeconds ) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; long time&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;= milliSeconds / 1000;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; String seconds = Integer.toString( ( int )( time % 60 ) );&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; String minutes = Integer.toString( ( int )( ( time % 3600 ) / 60 ) );&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; String hours&amp;nbsp; &amp;nbsp;= Integer.toString( ( int )( time / 3600 ) );&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; for( int i = 0; i &amp;lt; 2; i++ ) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if( seconds.length() &amp;lt; 2 ) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; seconds = &quot;0&quot; + seconds;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if( minutes.length() &amp;lt; 2 ) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; minutes = &quot;0&quot; + minutes;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if( hours.length() &amp;lt; 2 ) {&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hours = &quot;0&quot; + hours;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; }&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; String ddate = hours + &quot;:&quot; + minutes + &quot;:&quot; + seconds;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; return ddate;&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&lt;/p&gt;</description>
      <category>Java</category>
      <category>Java</category>
      <category>millisecond</category>
      <category>Time</category>
      <category>time format</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/383</guid>
      <comments>https://mrkn.tistory.com/383#entry383comment</comments>
      <pubDate>Thu, 19 Jul 2018 09:45:11 +0900</pubDate>
    </item>
    <item>
      <title>[Android Java] - RecyclerView 리스트 멀티셀렉트 해제 ( RecyclerView Disable Multiple select, splitMotionEvents )</title>
      <link>https://mrkn.tistory.com/382</link>
      <description>&lt;p&gt;&amp;lt;android.support.v7.widget.RecyclerView&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:id=&quot;@+id/movie_list&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:scrollbars=&quot;vertical&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:layout_width=&quot;match_parent&quot;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:layout_height=&quot;match_parent&quot;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: rgb(0, 0, 0); font-size: 18pt;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; android:splitMotionEvents=&quot;false&quot;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; app:layoutManager=&quot;LinearLayoutManager&quot;&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/android.support.v7.widget.RecyclerView&amp;gt;&lt;/p&gt;</description>
      <category>Android Java</category>
      <category>Android</category>
      <category>Choice</category>
      <category>list</category>
      <category>list multiple choice</category>
      <category>Multiple</category>
      <category>RecyclerView</category>
      <category>splitMotionEvents</category>
      <category>리스트</category>
      <category>리스트 멀티터치</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/382</guid>
      <comments>https://mrkn.tistory.com/382#entry382comment</comments>
      <pubDate>Tue, 17 Jul 2018 13:43:18 +0900</pubDate>
    </item>
    <item>
      <title>[Vivara] - 서비스 종료</title>
      <link>https://mrkn.tistory.com/381</link>
      <description>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 24pt;&quot;&gt;&lt;b&gt;비바라 서비스 종료 합니다&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: 24pt;&quot;&gt;&lt;b&gt;APK 필요하시면 보내드려요&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Vivara</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/381</guid>
      <comments>https://mrkn.tistory.com/381#entry381comment</comments>
      <pubDate>Wed, 4 Jul 2018 08:35:03 +0900</pubDate>
    </item>
    <item>
      <title>[PHP] - Filesize 함수 음수값 표시될때 ( Ex. -2023123 )</title>
      <link>https://mrkn.tistory.com/380</link>
      <description>&lt;p&gt;윈도우 서버 PHP Filesize() 함수 사용 시 리턴 값이 파일이 경로도 일치하나 음수로 표시될 경우&lt;/p&gt;&lt;p&gt;2GB ~ 4GB 사이 파일일 경우 음수로 표시됨 ( Ex.-2123123 )&lt;/p&gt;&lt;p&gt;그럴 경우&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;$fileSize = sprintf( &quot;%u&quot;, filesize ( $fileName ) );&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;변경 하여 사용 하면 정확한 값 출력&lt;/p&gt;</description>
      <category>PHP</category>
      <category>FILESIZE</category>
      <category>php</category>
      <category>PHP FIleSize</category>
      <category>sprintf</category>
      <category>window filesize</category>
      <category>window PHP</category>
      <category>윈도우 서버</category>
      <author>Vivara</author>
      <guid isPermaLink="true">https://mrkn.tistory.com/380</guid>
      <comments>https://mrkn.tistory.com/380#entry380comment</comments>
      <pubDate>Mon, 18 Jun 2018 10:47:28 +0900</pubDate>
    </item>
  </channel>
</rss>