<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>0x00 - NULL (English)</title>
    <description>snutiise git blog (English edition)</description>
    <link>https://snutiise.github.io/en/</link>
    <atom:link href="https://snutiise.github.io/en/feed.xml" rel="self" type="application/rss+xml"/>
    <language>en</language>
    <pubDate>Thu, 03 Dec 2020 23:00:00 +0000</pubDate>
    <lastBuildDate>Thu, 03 Dec 2020 23:00:00 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>Designing Data-Intensive Applications (2)</title>
        <description>The data model is the most important part of software development, because it strongly affects not only how the software is written but also how we think about the problem we are trying to solve. Most applications are built by layering one data model on top of another. The key question at each layer is how to represent its data model in terms of the next lower layer. For example: An application developer looks at the real world and models objects or data structures, and the APIs that manipulate those data structures. To store those data structures, they are expressed...</description>
        <pubDate>Thu, 03 Dec 2020 23:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/data-intensive-2/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/data-intensive-2/</guid>
        
        <category>study</category>
        
        
        <category>Architecture</category>
        
      </item>
    
      <item>
        <title>Designing Data-Intensive Applications (1)</title>
        <description>Recently I have been reading the book “Designing Data-Intensive Applications”. It covers a great deal, and while reading it I keep wondering why I only got around to reading it now. It contains many things I have experienced and worried about, so I started this post to organize the contents on my blog as I read. In general, data-intensive applications are built from standard building blocks that provide commonly needed functionality. Store data (database: MySQL, Oracle, MongoDB, etc.) Remember the result of an expensive operation (cache: Redis, Memcached, etc.) Let users search data by keyword or filter it (search index:...</description>
        <pubDate>Fri, 13 Nov 2020 23:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/data-intensive-1/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/data-intensive-1/</guid>
        
        <category>study</category>
        
        
        <category>Architecture</category>
        
      </item>
    
      <item>
        <title>Building an ELK Log Server</title>
        <description>In the service I currently operate, important logs are written separately to the DB, but all other logs (nginx, worker, talk, etc.) are managed only through syslog. The logs grew to tens of GB per day, so analysis took a long time. (I am actually still using GoAccess!) As the logs keep growing, I built a separate log server stack to store and manage them. I decided to build the server with the ELK stack, which is the most popular and has plenty of references. For nginx logs, I planned to store them on a dedicated server through rsyslog (on...</description>
        <pubDate>Sun, 08 Nov 2020 06:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/elk/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/elk/</guid>
        
        <category>elasticsearch</category>
        
        <category>logstash</category>
        
        <category>kibana</category>
        
        <category>filebeat</category>
        
        
        <category>LogServer</category>
        
      </item>
    
      <item>
        <title>Recent Update</title>
        <description>A recent update… I finished Software Maestro and now work at a company called Exodus Entertainment. I work on server development for an idol service called Choeaedol, and because it has many users, I am enjoying the work more than I expected. Recently, during a big event, I also experienced 5 million MAU. (The thrill of worrying about the servers every night…) (Users as seen in Firebase) An interesting experience where the mirror server fell behind and the master struggled (We had legacy code problems and lacked know-how for handling heavy traffic.) Everyone is sensitive during an event period, so...</description>
        <pubDate>Thu, 05 Nov 2020 06:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/event-diary/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/event-diary/</guid>
        
        <category>daily life</category>
        
        
        <category>Chat</category>
        
      </item>
    
      <item>
        <title>Validating an FCM Token</title>
        <description>There are two ways to validate an FCM token: using the SDK, or querying directly as shown below. For the SDK approach, refer to here. This time, let’s validate the FCM token by querying directly. To find out whether an FCM token received from the client is valid, set the headers as below and check the response. # Set FCM_API_KEY and FCM_TOKEN $ curl -H &quot;Content-Type: application/json&quot; -H &quot;Authorization: key=$FCM_API_KEY&quot; https://fcm.googleapis.com/fcm/send -d &apos;{&quot;registration_ids&quot;:[&quot;$FCM_TOKEN&quot;]}&apos; If it succeeds, the response has success as 1 and failure as 0, # Response on success $ {&quot;multicast_id&quot;:1007984435159395389,&quot;success&quot;:1,&quot;failure&quot;:0,&quot;canonical_ids&quot;:0,&quot;results&quot;:[{&quot;message_id&quot;:&quot;0:1571645063718949%12f57db2f9fd7ecd&quot;}]} and if it fails, the response has success...</description>
        <pubDate>Mon, 21 Oct 2019 17:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/fcm-token-check/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/fcm-token-check/</guid>
        
        <category>android</category>
        
        <category>fcm</category>
        
        
        <category>Programming</category>
        
      </item>
    
      <item>
        <title>Deleting Redis Keys by Pattern - dels</title>
        <description>Redis does not provide a separate dels command for deleting keys. Instead, you can delete them using a keys pattern. # Select DB 0 $ redis-cli -n 0 KEYS &quot;your key&quot; | xargs --delim=&apos;\n&apos; redis-cli -n 0 DEL Run the command above on the server where Redis is installed, and you can delete the keys that match the pattern you want.</description>
        <pubDate>Mon, 21 Oct 2019 16:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/redis-dels/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/redis-dels/</guid>
        
        <category>redis</category>
        
        
        <category>Database</category>
        
      </item>
    
      <item>
        <title>Electron Desktop Notifications</title>
        <description>When I built the chat app last time, I implemented the notification window with a child window. I did not mention it then, but Electron provides notifications. The main process can show a notification window through the notification module, but OS restrictions are quite severe. (The Windows family is the problem.) In the end, if you want a general-purpose notification window in the main process, it is less stressful to implement it yourself with a child window. In the renderer process, you can provide notification windows universally with the HTML5 notification API. You can test it with the simple example...</description>
        <pubDate>Mon, 26 Feb 2018 06:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/html5-desktop-api/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/html5-desktop-api/</guid>
        
        <category>electron</category>
        
        <category>javascript</category>
        
        <category>html5</category>
        
        
        <category>Programming</category>
        
      </item>
    
      <item>
        <title>Building a Chat App with Electron</title>
        <description>Last weekend I tried to build a chat app with Electron, but it did not get any responses, which was a problem. The socket in the renderer process kept getting no response, so I thought it was an Electron problem, but it was a CORS problem. I debugged Electron and found that the socket was not getting a response and only received a 403. I changed the origin on the server so that it would accept values coming from the Electron app. After that, I ran the app and it received the chat history correctly! Now let’s add a feature...</description>
        <pubDate>Mon, 05 Feb 2018 06:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/electron4/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/electron4/</guid>
        
        <category>electron</category>
        
        <category>javascript</category>
        
        <category>react</category>
        
        
        <category>Programming</category>
        
      </item>
    
      <item>
        <title>Building a Chat App with React</title>
        <description>One weekend, while idling around, I decided to build a chat app with Electron. I built the basic features of the app with React, but when I built it with Electron to use OS features, the socket in the renderer process disconnected after the first emit… I still do not know the cause, so for now I decided to port it to the web as a second-best option… Sockets are the basis of chat, so I looked for a usable web socket library and chose socket.io. # Easy environment setup... $ sudo npm install -g create-react-app # Install other libraries...</description>
        <pubDate>Sat, 03 Feb 2018 12:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/chatting-app/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/chatting-app/</guid>
        
        <category>react</category>
        
        <category>nodejs</category>
        
        <category>socket io</category>
        
        
        <category>Programming</category>
        
      </item>
    
      <item>
        <title>Connecting to GitHub with SSH in VS Code</title>
        <description>Pushing to GitHub from VS Code without SSH meant typing my ID and password every time, which became annoying… So I will create an SSH key, register it on GitHub, and change the remote address so that authentication is easier! First, let’s create an SSH key. # Check whether you already have a key... $ cd ~/.ssh # If not, create one! $ ssh-keygen -C &quot;your github email&quot; I created the key without a passphrase, so I just mashed Enter… (Of course, this may be insecure…!) When it is done, 2 files, id_rsa and id_rsa.pub, will have been created in...</description>
        <pubDate>Wed, 31 Jan 2018 03:00:00 +0000</pubDate>
        <link>https://snutiise.github.io/en/github-connect-ssh/</link>
        <guid isPermaLink="true">https://snutiise.github.io/en/github-connect-ssh/</guid>
        
        <category>git</category>
        
        <category>vs code</category>
        
        
        <category>Git</category>
        
      </item>
    
  </channel>
</rss>
