<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Knowledge Base Dept.</title>
    <link>https://mansookim.tistory.com/</link>
    <description>내 지식을 전파하기 위한 공간</description>
    <language>ko</language>
    <pubDate>Thu, 20 Aug 2026 01:03:42 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>김모작자</managingEditor>
    <item>
      <title>lg webfax 호스트모듈 mysql 8 접속 오류</title>
      <link>https://mansookim.tistory.com/141</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;FaxClientNC 모듈에 MySQL 5.7 사용 할 때는 문제 없었던거 같은데 새로 장만한 서버에 MySQL 8.0 이랑 연결 하려고 하니 아래처럼 에러가 나더라.. (결론은 TLS 옵션만 바꿔주면 되는데, 나는 서버 밖에 건들 수 있는게 없어서..)&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server&lt;/b&gt;. at sun.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) at com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167) at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:378) at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:205) at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1433) at com.mysql.cj.NativeSession.connect(NativeSession.java:133) at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:842) ... 17 more&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)&lt;/b&gt; at sun.security.ssl.HandshakeContext.&amp;lt;init&amp;gt;(HandshakeContext.java:171) at sun.security.ssl.ClientHandshakeContext.&amp;lt;init&amp;gt;(ClientHandshakeContext.java:103) at sun.security.ssl.TransportContext.kickstart(TransportContext.java:227) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:433) at com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:347) at com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java:191) at com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.java:101) at com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:369)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 같은 서버에 있는 다른 모듈은 잘만 접속되길래 ChatGPT 한테 물어보니 SSL 관련된 이슈로 나처럼 내부 접속만 해서 꼭 SSL 이 필요치 않는 경우 접속 문자열에 UseSSL=false 옵션만 주는걸로충분하다고 하더라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데! 해당 모듈을 Decompiler 로 돌려보니 MYSQL 일 때는 아래처럼 직접 문자열을 조립하다보니 뒤에다 쓸 방법이 없었다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #ffffff;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt; } else if (i_cfg.dbType.equalsIgnoreCase(&quot;MYSQL&quot;)) {
        dbID = i_cfg.dbID;
        dbPW = i_cfg.dbPassword;
        driver = &quot;com.mysql.jdbc.Driver&quot;;
        dbInfo = &quot;jdbc:mysql://&quot; + i_cfg.dbDBServer + &quot;:&quot; + i_cfg.dbPort + &quot;/&quot; + i_cfg.dbDBName + &quot;?autoReconnect=true&amp;amp;maxReconnects=50&quot;;
        } ....
...
 else if (i_cfg.dbType.equalsIgnoreCase(&quot;COMMON&quot;)) {
        dbID = i_cfg.dbId;
        dbPW = i_cfg.dbPass;
        driver = i_cfg.dbDriver;
        dbInfo = i_cfg.dbUrl;
      }&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 차선책으로 Type=COMMON 으로 대체해서 사용하려고 Fax.cfg 를 아래와 같이 수정 후 모듈 시작 하니 sql/faxclient_COMMON.xml 이 없다고 나오면서 실행을 못 하더라..&lt;/p&gt;
&lt;pre id=&quot;code_1750296823607&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;.....
# 기존에 사용중인 Type 과 db.xxx 속성은 주석 처리 해준다

Type=COMMON
db.url=jdbc:mysql://xx.xx.xx.xx:3306/xxxxxdb?autoReconnect=true&amp;amp;autoReconnectForPools=true&amp;amp;useSSL=false&amp;amp;allowPublicKeyRetrieval=true
db.driver=com.mysql.jdbc.Driver
db.user=xxxx
db.pass=xxxx
......&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해서 해당 파일을 MySQL 용 xml 파일을 복사해서 쓰면 되는데..&lt;br /&gt;1) jar 파일을 풀어 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;sql 폴더에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 있는 faxclient_MYSQL 파일을 faxclient_COMMON 으로 복사한 후&lt;br /&gt;2) 아래 명령으로 jar 파일에 추가해서 실행했다!&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 아래 FaxClientNC.jar 파일은 lib 폴더에 있음.. &lt;br /&gt;lib 폴더 밑에 임시로 sql 폴더를 만들거나 해서 faxclient_COMMON.xml 을 jar 파일 내 sql 폴더에 들어가도록 해야한다.&lt;/p&gt;
&lt;pre id=&quot;code_1750296363889&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# jar 파일에 xml 파일 추가
jar uf FaxClientNC.jar sql/faxclient_COMMON.xml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>faxclientnc</category>
      <category>with mysql8</category>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/141</guid>
      <comments>https://mansookim.tistory.com/141#entry141comment</comments>
      <pubDate>Thu, 19 Jun 2025 10:30:41 +0900</pubDate>
    </item>
    <item>
      <title>Win Home 버전에서 정책 편집기 사용</title>
      <link>https://mansookim.tistory.com/140</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Command Prompt 를 관리자 권한으로 실행해서 아래 스크립트를 각각 실행해주면 되더라&lt;br /&gt;- Windows 11 24H2에서 확인해봤음&lt;/p&gt;
&lt;pre id=&quot;code_1750048312240&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;FOR %F IN (&quot;%SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~*.mum&quot;) DO (DISM /Online /NoRestart /Add-Package:&quot;%F&quot;)
FOR %F IN (&quot;%SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~*.mum&quot;) DO (DISM /Online /NoRestart /Add-Package:&quot;%F&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>gpedit.msc</category>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/140</guid>
      <comments>https://mansookim.tistory.com/140#entry140comment</comments>
      <pubDate>Mon, 16 Jun 2025 13:32:48 +0900</pubDate>
    </item>
    <item>
      <title>VSCODE, Cursor IDE 에서 java home, jdk path 설정</title>
      <link>https://mansookim.tistory.com/139</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;만만한 건 Ctrl + Shift + P 눌러서 Preferences: Open User Setting (JSON) 열어서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 개별 jdk, jre 경로 써주면 되더라..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최첨단 IDE 라서 다른건 쉽게 되는데 거꾸로 java 해보려니 더 수작업을 해야하는 느낌&lt;/p&gt;
&lt;div style=&quot;background-color: #1a1a1a; color: #d8dee9;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;java.configuration.runtimes&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;JavaSE-1.8&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;path&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;C:/jdk1.8.0_431&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;JavaSE-17&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #82d2ce;&quot;&gt;&quot;path&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #e394dc;&quot;&gt;&quot;C:/Users/ineti/.jdks/ms-17.0.15&quot;&lt;/span&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d8dee9;&quot;&gt;&amp;nbsp; &amp;nbsp; ],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>java.home</category>
      <category>vscode jdk</category>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/139</guid>
      <comments>https://mansookim.tistory.com/139#entry139comment</comments>
      <pubDate>Fri, 23 May 2025 14:31:39 +0900</pubDate>
    </item>
    <item>
      <title>ESP32, ESP32 S3 코드 영역 늘리기 (platformio, arduino)</title>
      <link>https://mansookim.tistory.com/137</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;arduino-esp32 에서 제공하는 ble, wifi, httpclient, ota 등에다가 이미지 좀 추가하다보면 기본 코드 공간이 너무 부족하게 된다.&amp;nbsp;&lt;br /&gt;The program size (00000 bytes) is greater than maximum allowed (1310720 bytes) &lt;br /&gt;위와 같은 메세지를 만났을 때 아래 조치가 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 구입할 때 표기된 ESP32 메모리가 최소 4MB 였던거 같은데.. 더 큰 용량 제품을 사도 동일하게 나온다&lt;br /&gt;- 아래 링크를 보면 코드용 공간 기본값이 128KB 인거 같다..&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv&quot;&gt;arduino-esp32/tools/partitions/default.csv at master &amp;middot; espressif/arduino-esp32 (github.com)&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1725438676753&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;arduino-esp32/tools/partitions/default.csv at master &amp;middot; espressif/arduino-esp32&quot; data-og-description=&quot;Arduino core for the ESP32. Contribute to espressif/arduino-esp32 development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv&quot; data-og-url=&quot;https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ccjOzY/hyWVWUH0Qo/OqMRn7kwEOtXjziMkgjQQK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ccjOzY/hyWVWUH0Qo/OqMRn7kwEOtXjziMkgjQQK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;arduino-esp32/tools/partitions/default.csv at master &amp;middot; espressif/arduino-esp32&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Arduino core for the ESP32. Contribute to espressif/arduino-esp32 development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 파티션 테이블 직접 정의&lt;/b&gt;&lt;br /&gt;아래와 같이 파티션 유형별로 구분하여 저장한다.&lt;br /&gt;코드가 들어가는 파티션은 app0, app1 으로 여기서는 0x1D0000 을 지정 했으니 약 1.9MB 정도가 되겠다.&lt;br /&gt;- app0 은 주로 사용되는 영역이고, app1 은 OTA 시 올라갈 코드를 저장할 영역으로 사용&lt;br /&gt;- size 는 필요에 따라 조정하며 offset + size 가 다음 행의 offset 과 맞아야한다&lt;br /&gt;- spiffs 위치 변경시 나중에 코드를 이용해 spiffs 초기화가 필요하다 (format?)&lt;/p&gt;
&lt;pre id=&quot;code_1725437545586&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Name,   Type, SubType, Offset,  Size, Flags
nvs,      data, nvs,     0x9000,  0x5000,
otadata,  data, ota,     0xe000,  0x2000,
app0,     app,  ota_0,   0x10000, 0x1D0000,
app1,     app,  ota_1,   0x1E0000,0x1D0000,
spiffs,   data, spiffs,  0x3B0000,0x10000,
coredump, data, coredump,0x3C0000,0x10000,&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 파티션 테이블 반영&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아두이노 IDE 사용시 &amp;nbsp;Tools &amp;gt; Partition Scheme 에서 변경 할 수 있다.&lt;br /&gt;PlatformIO 사용시 프로젝트 소스 최상단에 있는 platformio.ini 을 열어, &lt;br /&gt;board_build.partitons 항목에 위 csv 파일을 지정해준다&lt;/p&gt;
&lt;pre id=&quot;code_1725437752876&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[env]
board = lolin_d32 
....
....
board_build.partitions=custom_paritions.csv   # csv 파일명 기재&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ESP32 파티션 설정 관련 참고 :: &lt;a href=&quot;https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/tutorials/partition_table.html&quot;&gt;Partition Table &amp;mdash; Arduino-ESP32 2.0.14 documentation (readthedocs-hosted.com)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1725438306032&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Partition Table &amp;mdash; Arduino-ESP32 2.0.14 documentation&quot; data-og-description=&quot;The nvs partition subtype is used to define the partition to store general data, like the WiFi data, device PHY calibration data and any other data to be stored on the non-volatile memory. This kind of partition is suitable for small custom configuration d&quot; data-og-host=&quot;espressif-docs.readthedocs-hosted.com&quot; data-og-source-url=&quot;https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/tutorials/partition_table.html&quot; data-og-url=&quot;https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/tutorials/partition_table.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/tutorials/partition_table.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/tutorials/partition_table.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Partition Table &amp;mdash; Arduino-ESP32 2.0.14 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The nvs partition subtype is used to define the partition to store general data, like the WiFi data, device PHY calibration data and any other data to be stored on the non-volatile memory. This kind of partition is suitable for small custom configuration d&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;espressif-docs.readthedocs-hosted.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Build Note</category>
      <category>ESP32</category>
      <category>esp32 maximum allowed</category>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/137</guid>
      <comments>https://mansookim.tistory.com/137#entry137comment</comments>
      <pubDate>Wed, 4 Sep 2024 17:25:09 +0900</pubDate>
    </item>
    <item>
      <title>미사 동전 입금</title>
      <link>https://mansookim.tistory.com/136</link>
      <description>&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 111px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;은행&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;요일, 시간대&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;우리은행 하남미사역지점&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;화요일, 목요일&amp;nbsp; 09~12시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;KB국민은행&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 20px;&quot;&gt;목요일 09~11시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;신한은행 미사금융센터&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;수요일 09~11시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>동전입금</category>
      <category>미사</category>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/136</guid>
      <comments>https://mansookim.tistory.com/136#entry136comment</comments>
      <pubDate>Thu, 8 Aug 2024 11:27:35 +0900</pubDate>
    </item>
    <item>
      <title>disk_cache v3</title>
      <link>https://mansookim.tistory.com/135</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파일 위치 :&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;크롬 : C:\Users\[프로필명]\AppData\Local\Google\Chrome\User Data\Default\Cache&lt;/li&gt;
&lt;li&gt;엣지 : C:\Users\[프로필명]\AppData\Local\Microsoft\Edge\User Data\Default\Cache&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 유형 :&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인덱스 파일 : index 단일 파일&lt;/li&gt;
&lt;li&gt;데이터 파일(블럭 파일) : data_? 형태의 파일&lt;/li&gt;
&lt;li&gt;외부 파일 : f_??? 형태의 별도 파일&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 규격 (2024.07 기준)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인덱스 : v3&lt;/li&gt;
&lt;li&gt;데이터 : v2&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>기타</category>
      <category>chrominium</category>
      <category>disk_cache</category>
      <category>파일구조</category>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/135</guid>
      <comments>https://mansookim.tistory.com/135#entry135comment</comments>
      <pubDate>Fri, 19 Jul 2024 15:17:38 +0900</pubDate>
    </item>
    <item>
      <title>esp disk space not enough</title>
      <link>https://mansookim.tistory.com/134</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;새로 산 노트북의 BIOS 버전이 조금 차이나길래&amp;nbsp;&lt;br /&gt;업데이트 하려는데 자꾸 저 에러가 나더라..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;찾아보니 원인은 윈도우의 EFI 파티션에 공간이 부족해서라는데....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해결 방안은&lt;br /&gt;1) 맨 앞에 EFI 파티션 크기를 기본(100MB?) 에서 늘리기&lt;br /&gt;2) EFI 파티션에 공간 마련하기&lt;br /&gt;정도 되는거 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번은 찾아보면 많이 나오는거 같고&lt;br /&gt;2번은 아래와 같이 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 경우는 BIOS 에 있는 셀프 힐링 기능 때문에 커다란 파일이 있어서 그거 삭제만으로 충분했다&lt;/p&gt;
&lt;pre id=&quot;code_1668076460264&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;1)
관리자 권한으로 Command Prompt (CMD) 실행

2)
mountvol 을 실행하면 마운트 안된 파티션이 GUID 이름 형태로 주르륵 보이는데, 
내 경우에는 마지막 파티션이 EFI 파티션였고, FAT32 파일 시스템인 파티션이다.
아래와 같이 파티션을 드라이브로 연결시킨다

mountvol X: /S

위와 같이 실행하면 X 드라이브로 EFI 파티션이 자동 연결된다
(X: 를 사용중이면 다른 문자로)

3) 
연결한 드라이브로 이동. Win11 에서는 탐색기 이용이 불가하다!
관리자 상태인 그대로 해당 드라이브로 이동!

4)
DIR 로 찾아 들어가면서 불필요해 보이는 파일들을 삭제한다
내 경우 레노보 노트북의 셀프 힐링(?) 기능 때문에 32MB 파일이 있더라..
해서 싹뚝 삭제.. log 파일 등 삭제..삭제...&lt;/code&gt;&lt;/pre&gt;</description>
      <category>기타</category>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/134</guid>
      <comments>https://mansookim.tistory.com/134#entry134comment</comments>
      <pubDate>Thu, 10 Nov 2022 19:35:29 +0900</pubDate>
    </item>
    <item>
      <title>java vs .net coding conventions</title>
      <link>https://mansookim.tistory.com/133</link>
      <description>&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 220px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;Java&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;.net&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;파일 형태&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;2000 줄이 넘으면 분리 필요&lt;br /&gt;&lt;br /&gt;가급적 한 행의 길이는 80자 미만&lt;br /&gt;&lt;br /&gt;영역을 빈줄로 구분&lt;br /&gt;첫줄은 패키지명 선언&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 40px;&quot;&gt;class 선언&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 40px;&quot;&gt;class ClassName&lt;br /&gt;interface IClassAncestor&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 40px;&quot;&gt;class&amp;nbsp; ClassName&lt;br /&gt;struct StructName&lt;br /&gt;record RecordName&lt;br /&gt;interface &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;I&lt;/span&gt;&lt;/b&gt;ClassAncestor&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 40px;&quot;&gt;구성된 단어의 첫 글자는 대문자 (PascalCasing)&lt;br /&gt;.net 인터페이스에는 앞에 I 를 붙여서 선언&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;-&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;class 에 속한&lt;br /&gt;variables/functions&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot; colspan=&quot;2&quot;&gt;camel case 사용.&lt;br /&gt;자료형을 이름에 붙이지 않는다!&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;기능별로 묶음&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;internal, private 에 속한 멤버는&lt;br /&gt;_ 를 앞에 붙임&lt;br /&gt;static 은 s_ 를 붙임&lt;br /&gt;threadstatic 은 t_ 를 붙임&lt;br /&gt;&lt;br /&gt;private&amp;nbsp;IWorkerQueue&amp;nbsp;_workerQueue;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;function 의 파라미터&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;camel case 사용&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;varialbe 선언&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;가급적 한 줄에 1개씩 선언&lt;br /&gt;가급적 다른 유형의 자료 형태를 같은줄에 배치 하지 않도록&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;body&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;'{' 가 선언을 시작하는 행의 끝에서 부터 시작&lt;br /&gt;void funcName() &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;{&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if(boolean) &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;{&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;}&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;'{' 가 선언을 시작하는 다음행에 위치&lt;br /&gt;&lt;br /&gt;void funcName()&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if( boolean)&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;}&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions&lt;/a&gt;&lt;/p&gt;</description>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/133</guid>
      <comments>https://mansookim.tistory.com/133#entry133comment</comments>
      <pubDate>Wed, 13 Oct 2021 11:26:16 +0900</pubDate>
    </item>
    <item>
      <title>nuget 복원 에러 NU1100</title>
      <link>https://mansookim.tistory.com/132</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;dotnet-sdk 설치 후&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dotnet --info&amp;nbsp;&lt;br /&gt;등의 명령에는 이상 없는데.&lt;br /&gt;&lt;br /&gt;dotnet restore &lt;br /&gt;명령 하면 전체 패키지에 대해 복원을 못 하는 문제&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;xxx.csproj : error NU1100: 'net5.0'에 대해 'xxxx' 을(를) 확인할 수 없습니다.&lt;br /&gt;xxx.csproj : error NU1100: Unable to resolve 'xxx' for ...&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;---&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 .net core SDK 가 있던 상태에서 .net sdk 5.0설치하고 발생한 문제였는데&lt;br /&gt;아래와 같이 해결하였다. (원래 기본값으로 아래 api.nuget.org 가 들어가 있는게 정상인데 하나도 등록이 안돼 있었음)&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;dotnet&amp;nbsp;nuget&amp;nbsp;add&amp;nbsp;source&amp;nbsp;--name&amp;nbsp;nuget.org&amp;nbsp;&lt;a href=&quot;https://api.nuget.org/v3/index.json&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.nuget.org/v3/index.json&lt;/a&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고 URL : &lt;a href=&quot;https://github.com/dotnet/sdk/issues/4156&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/dotnet/sdk/issues/4156&lt;/a&gt;&lt;/p&gt;</description>
      <category>.NET</category>
      <category>dotnet restore</category>
      <category>NU1100</category>
      <category>nuget restore</category>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/132</guid>
      <comments>https://mansookim.tistory.com/132#entry132comment</comments>
      <pubDate>Mon, 30 Aug 2021 18:18:51 +0900</pubDate>
    </item>
    <item>
      <title>c# 에서 .proto 파일 사용하기</title>
      <link>https://mansookim.tistory.com/131</link>
      <description>&lt;p&gt;nuget 에서 protobuf 와 관련된&lt;/p&gt;
&lt;p&gt;- google.protobuf&lt;br /&gt;- google.protobuf.tools&lt;/p&gt;
&lt;p&gt;두개의 패키지를 설치는 했는데.. .proto 파일을 어떻게 변환하는지 모르겠더라..&lt;br /&gt;구글링..&lt;br /&gt;역시 stackoverflow 에는 답이 있다!&lt;br /&gt;&lt;br /&gt;visual studio 에는 pre-build event 라는걸 설정해둘 수 있는데,&lt;br /&gt;아래와 같이 -I 에는 가져다 쓸 .proto 파일이 있는 경로, -csharp_out 에는 c# class 파일이 생성되는 위치, 마지막엔 컴파일 하려는 .proto 파일 경로를 지정하여 빌드 직전에 .cs 파일을 생성해 낸다.&lt;/p&gt;
&lt;p&gt;아래는 프로젝트의 protos 폴더에 있는 모든 .proto 파일을 가지고 packet 폴더에 .cs 파일을 생성한다.&amp;nbsp;&lt;br /&gt;(미리 폴더를 생성해야 에러가 안생긴다!)&lt;/p&gt;
&lt;pre id=&quot;code_1603808172817&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(NugetPackageRoot)google.protobuf.tools\3.13.0\tools\windows_x64\protoc.exe 
  -I=$(ProjectDir)protos 
  --csharp_out=$(ProjectDir)packet 
  $(ProjectDir)protos\*.proto&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/58385978/invoking-tool-in-a-nuget-package-with-generator-getting-unexpected-was-not-f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;stackoverflow.com/questions/58385978/invoking-tool-in-a-nuget-package-with-generator-getting-unexpected-was-not-f&lt;/a&gt;&lt;/p&gt;</description>
      <category>protobuf</category>
      <category>protobuf.tools</category>
      <author>김모작자</author>
      <guid isPermaLink="true">https://mansookim.tistory.com/131</guid>
      <comments>https://mansookim.tistory.com/131#entry131comment</comments>
      <pubDate>Tue, 27 Oct 2020 23:26:51 +0900</pubDate>
    </item>
  </channel>
</rss>