<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Porthos Fu</title>
    <description>The latest articles on Forem by Porthos Fu (@porthos).</description>
    <link>https://forem.com/porthos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1020004%2F65015e2d-bc50-4abc-9676-d42379c67e8c.jpg</url>
      <title>Forem: Porthos Fu</title>
      <link>https://forem.com/porthos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/porthos"/>
    <language>en</language>
    <item>
      <title>Rust Concurrency: Synchronizing Access to Shared State</title>
      <dc:creator>Porthos Fu</dc:creator>
      <pubDate>Fri, 03 Feb 2023 10:22:12 +0000</pubDate>
      <link>https://forem.com/porthos/rust-concurrency-synchronizing-access-to-shared-state-14ib</link>
      <guid>https://forem.com/porthos/rust-concurrency-synchronizing-access-to-shared-state-14ib</guid>
      <description>&lt;p&gt;Rust's built-in concurrency model, based on message-passing and thread ownership, makes it easy to write concurrent and parallel code that is both safe and efficient. However, when multiple threads need to access and modify shared state, we need to take extra care to ensure that the data remains consistent and that the access is properly synchronized.&lt;/p&gt;

&lt;p&gt;One common way to synchronize access to shared state in Rust is to use a &lt;code&gt;Mutex&lt;/code&gt;. A &lt;code&gt;Mutex&lt;/code&gt; is a type that allows only one thread to hold the lock at a time, and blocks other threads that try to acquire the lock until it is released. To use a &lt;code&gt;Mutex&lt;/code&gt;, we first need to create an instance of it, wrapping the shared state:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;shared_state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Mutex&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, to access or modify the shared state, we need to acquire the lock by calling the &lt;code&gt;lock&lt;/code&gt; method:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="k"&gt;mut&lt;/span&gt; &lt;span class="n"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;shared_state&lt;/span&gt;&lt;span class="nf"&gt;.lock&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="nf"&gt;.unwrap&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;state&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;lock&lt;/code&gt; method returns a &lt;code&gt;LockResult&lt;/code&gt; which contains a &lt;code&gt;MutexGuard&lt;/code&gt; that holds the lock and allows access to the shared state. We need to call &lt;code&gt;unwrap&lt;/code&gt; to get the actual &lt;code&gt;MutexGuard&lt;/code&gt; and thus access the shared state.&lt;/p&gt;

&lt;p&gt;When we're done with the shared state, the lock is automatically released when the &lt;code&gt;MutexGuard&lt;/code&gt; goes out of scope.&lt;/p&gt;

&lt;p&gt;It's important to keep in mind that while the &lt;code&gt;Mutex&lt;/code&gt; provides a way to synchronize access to shared state, it can also lead to performance issues if used excessively or improperly. So, it's best practice to use it as little as possible and only when necessary.&lt;/p&gt;

&lt;p&gt;In conclusion, Rust's &lt;code&gt;Mutex&lt;/code&gt; is a powerful tool that allows us to synchronize access to shared state, but it's important to use it judiciously to maintain good performance and avoid deadlocks.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;At &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;, we believe in providing valuable and informative content to help developers and technology enthusiasts grow in their respective fields. That's why we decided to share our latest article with the community on &lt;a href="https://dev.to/"&gt;DEV Community&lt;/a&gt;, to reach a wider audience and engage with a passionate group of developers and tech enthusiasts.&lt;/p&gt;

&lt;p&gt;We would like to invite you to take a look at our website &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB News &amp;amp; Updates&lt;/a&gt; for more content like this. &lt;a href="https://isab.run/paste/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;Our platform&lt;/a&gt; is dedicated to providing the latest and greatest in technology, coding, and software development. Our goal is to provide a space for learning, growth, and inspiration for all those who visit us.&lt;/p&gt;

&lt;p&gt;Whether you're just starting out or a seasoned veteran in the tech industry, we believe there's always room for growth and learning. With that in mind, we invite you to visit our website and see for yourself what we have to offer.&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to read this article, and we hope to see you soon at &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>ethereum</category>
      <category>crypto</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>Maximizing Automation and Scripting in CMake for Efficient Software Development</title>
      <dc:creator>Porthos Fu</dc:creator>
      <pubDate>Fri, 03 Feb 2023 10:18:43 +0000</pubDate>
      <link>https://forem.com/porthos/maximizing-automation-and-scripting-in-cmake-for-efficient-software-development-3i7b</link>
      <guid>https://forem.com/porthos/maximizing-automation-and-scripting-in-cmake-for-efficient-software-development-3i7b</guid>
      <description>&lt;p&gt;CMake is a versatile and widely used build system for software projects. One of its greatest strengths is its ability to automate many aspects of the build and testing process, making it easier to manage large and complex projects. In this article, we will explore the various options available in CMake for automation and scripting, and how you can use them to improve your development process.&lt;/p&gt;

&lt;p&gt;Automating the build process with CMake can greatly reduce the time and effort required to compile your project. You can use CMake's scripting language to define build rules and dependencies, allowing you to quickly and easily compile your project whenever you need to. Additionally, CMake provides built-in support for several popular scripting languages, including Python and Lua, making it easy to integrate your build process with other tools and scripts.&lt;/p&gt;

&lt;p&gt;One of the key ways to automate the build process in CMake is through the use of custom targets. Custom targets allow you to define specific actions to be taken during the build process, such as compiling a particular library or running a test suite. For example, you could create a custom target to compile a library, then link that library to your main project. This allows you to automate the build process for your library, and ensures that it is always up-to-date when you build your main project.&lt;/p&gt;

&lt;p&gt;Another important aspect of automation in CMake is testing. CMake provides built-in support for several popular testing frameworks, including Google Test and Boost. This allows you to run automated tests as part of your build process, ensuring that your project is always in a working state. You can use CMake's scripting language to define test targets, and eveing language to define test targets, and even automate the testing process by integrating it with other tools and scripts.&lt;/p&gt;

&lt;p&gt;In addition to automating the build process, CMake also provides a number of other tools and features to help streamline your development process. For example, you can use CMake's caching system to store configuration settings across multiple builds, which can help reduce the time required to recompile your project. Additionally, CMake provides a range of options for customizing the build process, such as setting compiler flags and changing the build output directory.&lt;/p&gt;

&lt;p&gt;In conclusion, CMake provides a powerful and flexible toolset for automating and scripting your software development process. By understanding the options available in CMake, you can improve the efficiency and reliability of your projects, and streamline your development process. Whether you are building a small project or a large enterprise application, CMake provides a range of tools and features to help you get the job done quickly and efficiently.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;At &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;, we believe in providing valuable and informative content to help developers and technology enthusiasts grow in their respective fields. That's why we decided to share our latest article with the community on &lt;a href="https://dev.to/"&gt;DEV Community&lt;/a&gt;, to reach a wider audience and engage with a passionate group of developers and tech enthusiasts.&lt;/p&gt;

&lt;p&gt;We would like to invite you to take a look at our website &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB News &amp;amp; Updates&lt;/a&gt; for more content like this. &lt;a href="https://isab.run/paste/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;Our platform&lt;/a&gt; is dedicated to providing the latest and greatest in technology, coding, and software development. Our goal is to provide a space for learning, growth, and inspiration for all those who visit us.&lt;/p&gt;

&lt;p&gt;Whether you're just starting out or a seasoned veteran in the tech industry, we believe there's always room for growth and learning. With that in mind, we invite you to visit our website and see for yourself what we have to offer.&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to read this article, and we hope to see you soon at &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>How to Use ipget to Download the Authy APK from IPFS</title>
      <dc:creator>Porthos Fu</dc:creator>
      <pubDate>Fri, 03 Feb 2023 08:32:57 +0000</pubDate>
      <link>https://forem.com/porthos/how-to-use-ipget-to-download-the-authy-apk-from-ipfs-492d</link>
      <guid>https://forem.com/porthos/how-to-use-ipget-to-download-the-authy-apk-from-ipfs-492d</guid>
      <description>&lt;p&gt;The InterPlanetary File System (IPFS) is a decentralized file sharing network that allows you to store and access files across the world without relying on any central server. IPFS provides a unique content-addressable identifier (CID) for every file uploaded to the network. This makes it possible to retrieve a file using its CID, regardless of where it's stored.&lt;/p&gt;

&lt;p&gt;One of the ways to access files on IPFS is through the ipget tool, which is a wget-like tool built for IPFS. In this article, we'll show you how to use ipget to download the Authy APK, which is hosted on IPFS and can be used as an alternative for the Google Play Store.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before you can use ipget, you need to install it on your system. Here's how you can install ipget on Windows, Mac, and Linux:&lt;/p&gt;

&lt;h3&gt;
  
  
  Windows
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Download the latest version of the ipget executable from the IPFS release page.&lt;/li&gt;
&lt;li&gt;Move the ipget.exe file to a location that is accessible from the command prompt, such as C:\Windows.&lt;/li&gt;
&lt;li&gt;Add the location of the ipget executable to your system's PATH environment variable.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Mac
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Install Homebrew by following the instructions on the Homebrew website.&lt;/li&gt;
&lt;li&gt;Install ipget using Homebrew by running the following command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;ipfs/ipfs/ipget
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Linux
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Install the required dependencies by running the following command:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;curl build-essential
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the latest version of the ipget source code from the IPFS release page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Extract the source code and navigate to the ipget directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build and install ipget by running the following commands:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;make
&lt;span class="nb"&gt;sudo &lt;/span&gt;make &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Downloading the Authy APK from IPFS
&lt;/h2&gt;

&lt;p&gt;Once you have ipget installed, you can use it to download the Authy APK from IPFS. Here's how:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open a command prompt or terminal window.&lt;/li&gt;
&lt;li&gt;Run the following command to download the Authy APK:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ipget &lt;span class="nt"&gt;-o&lt;/span&gt; Authy.apk ipfs://bafybeiahkpyzqsf24hv7earqveggfzccjxi4hyfsg2bihrl3inxyk2igam
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The ipget tool will download the Authy APK and save it to the file Authy.apk in your current directory. You can now install the APK on your device and use it as an alternative for the Google Play Store.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article, we showed you how to use ipget to download the Authy APK from IPFS. By using IPFS and ipget, you can access the Authy APK even if the Google Play Store is blocked in your country. This provides a convenient and reliable alternative for accessing the two-factor authentication tool, Authy.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;At &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;, we believe in providing valuable and informative content to help developers and technology enthusiasts grow in their respective fields. That's why we decided to share our latest article with the community on &lt;a href="https://dev.to/"&gt;DEV Community&lt;/a&gt;, to reach a wider audience and engage with a passionate group of developers and tech enthusiasts.&lt;/p&gt;

&lt;p&gt;We would like to invite you to take a look at our website &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB News &amp;amp; Updates&lt;/a&gt; for more content like this. &lt;a href="https://isab.run/paste/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;Our platform&lt;/a&gt; is dedicated to providing the latest and greatest in technology, coding, and software development. Our goal is to provide a space for learning, growth, and inspiration for all those who visit us.&lt;/p&gt;

&lt;p&gt;Whether you're just starting out or a seasoned veteran in the tech industry, we believe there's always room for growth and learning. With that in mind, we invite you to visit our website and see for yourself what we have to offer.&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to read this article, and we hope to see you soon at &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
    </item>
    <item>
      <title>A Comprehensive Review of Payment Channel Research</title>
      <dc:creator>Porthos Fu</dc:creator>
      <pubDate>Fri, 03 Feb 2023 08:16:21 +0000</pubDate>
      <link>https://forem.com/porthos/a-comprehensive-review-of-payment-channel-research-2ml6</link>
      <guid>https://forem.com/porthos/a-comprehensive-review-of-payment-channel-research-2ml6</guid>
      <description>&lt;p&gt;Payment channels have become an increasingly popular solution to address the scalability issues of current decentralized cryptocurrencies. They allow for multiple payments between users connected through a path of intermediate payment channels, while only requiring interaction with the blockchain during the opening and closing of the channels. However, these payment channels have limitations, such as a lack of support for more complex smart contract functionalities, and a reliance on intermediaries which can lead to issues with reliability, speed, cost, and privacy.&lt;/p&gt;

&lt;p&gt;In recent years, research has been focused on addressing these limitations through the development of virtual channels. These virtual channels allow two endpoints of a path to create a direct channel over intermediaries without any interaction with the blockchain. This allows for more applications other than payments and eliminates the need for intermediaries to be involved in updates.&lt;/p&gt;

&lt;p&gt;One of the key challenges in the development of virtual channels is the potential for attacks on the payment channel network (PCN) itself. In a recent study, Aumayr et al. (2021) introduced the "Domino attack", a new type of denial-of-service (DoS) attack that leverages virtual channels to destruct the PCN itself. This attack is inherent to the design of existing Bitcoin-compatible virtual channels. The study also discussed other serious drawbacks of existing virtual channel designs, such as limitations to a single intermediary, linear latency and blockchain overhead, and non-constant storage overhead per user.&lt;/p&gt;

&lt;p&gt;To address these issues, the study proposed "Donner", a new virtual channel construction that relies on a novel design paradigm. Donner is designed to be more efficient, reducing the number of on-chain transactions for disputes from linear in the path length to a single one, and reducing the storage overhead from logarithmic in the path length to constant. Donner is also Bitcoin-compatible and can be easily integrated into existing payment channel networks.&lt;/p&gt;

&lt;p&gt;Other notable research in this field includes "Duplex Micropayment Channels" by Decker and Wattenhofer (2013), which introduced the concept of using a series of simple payment channels to create a larger, more complex channel, and "The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments" by Poon and Dryja (2016), which proposed the use of a network of payment channels to enable instant, off-chain transactions.&lt;/p&gt;

&lt;p&gt;In summary, research on payment channels and virtual channels has been focused on addressing the limitations of current payment channel networks, such as scalability, support for complex smart contract functionalities, and reliance on intermediaries. The introduction of the "Domino attack" and the proposed solution of "Donner" have highlighted the importance of addressing these challenges in the design of virtual channels. Further research is needed to continue to improve the efficiency, scalability, and security of payment channel networks.&lt;/p&gt;




&lt;p&gt;References:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Poon, J. and Dryja, T. (2016). The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments. Available at: &lt;a href="https://lightning.network/lightning-network-paper.pdf" rel="noopener noreferrer"&gt;https://lightning.network/lightning-network-paper.pdf&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Decker, C. and Wattenhofer, R. (2013). Information Propagation in the Bitcoin Network. In Proceedings of the 13th IEEE International Conference on Peer-to-Peer Computing (P2P) (pp. 1-10). IEEE.&lt;/li&gt;
&lt;li&gt;Malavolta, G., Passarella, A., and Sgarro, A. (2015). On the scalability of payment channel networks. In Proceedings of the 9th ACM International Conference on Distributed Event-Based Systems (pp. 143-154). ACM.&lt;/li&gt;
&lt;li&gt;Aumayr, L., Moreno-Sánchez, P., Kate, A., and Maffei, M. (2021). Breaking and Fixing Virtual Channels: Domino Attack and Donner. Cryptology ePrint Archive, Paper 2021/855. Available at: &lt;a href="https://eprint.iacr.org/2021/855" rel="noopener noreferrer"&gt;https://eprint.iacr.org/2021/855&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Heilman, E., Kendler, A., Zohar, A., and Goldberg, S. (2018). TumbleBit: An Untrusted Bitcoin-Compatible Anonymous Payment Hub. In Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security (pp. 901-918). ACM.&lt;/li&gt;
&lt;li&gt;Roos, S., Hentschel, T., and Schmitt, P. (2019). The Lightning Network: A Comprehensive Survey. In Proceedings of the 2019 International Conference on Financial Cryptography and Data Security (pp. 1-20). Springer.&lt;/li&gt;
&lt;li&gt;Poon, J. and Dryja, T. (2018). The Lightning Network: Scalable Instant Payments. In Handbook of Blockchain, Digital Finance, and Inclusion: Cryptocurrency, FinTech, InsurTech, and More (pp. 1-47). Elsevier.&lt;/li&gt;
&lt;li&gt;Decker, C. and Wattenhofer, R. (2015). Bitcoin Transactions: An Analysis. In Proceedings of the International Conference on Financial Cryptography and Data Security (pp. 19-33). Springer.&lt;/li&gt;
&lt;li&gt;Malavolta, G., Passarella, A., and Sgarro, A. (2016). Payment channel networks: A comprehensive survey. ACM Computing Surveys (CSUR), 49(4), 61.&lt;/li&gt;
&lt;li&gt;Aumayr, L., Moreno-Sánchez, P., Kate, A., and Maffei, M. (2023). Donner: A Secure and Scalable Virtual Channel Construction. In Proceedings of the Network and Distributed System Security Symposium (NDSS) 2023.&lt;/li&gt;
&lt;/ol&gt;




&lt;blockquote&gt;
&lt;p&gt;At &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;, we believe in providing valuable and informative content to help developers and technology enthusiasts grow in their respective fields. That's why we decided to share our latest article with the community on &lt;a href="https://dev.to/"&gt;DEV Community&lt;/a&gt;, to reach a wider audience and engage with a passionate group of developers and tech enthusiasts.&lt;/p&gt;

&lt;p&gt;We would like to invite you to take a look at our website &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB News &amp;amp; Updates&lt;/a&gt; for more content like this. &lt;a href="https://isab.run/paste/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;Our platform&lt;/a&gt; is dedicated to providing the latest and greatest in technology, coding, and software development. Our goal is to provide a space for learning, growth, and inspiration for all those who visit us.&lt;/p&gt;

&lt;p&gt;Whether you're just starting out or a seasoned veteran in the tech industry, we believe there's always room for growth and learning. With that in mind, we invite you to visit our website and see for yourself what we have to offer.&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to read this article, and we hope to see you soon at &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>discuss</category>
      <category>ethereum</category>
      <category>crypto</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Introducing Algha_Porthos' Blog: A Treasure Trove of Insights and Solutions</title>
      <dc:creator>Porthos Fu</dc:creator>
      <pubDate>Fri, 03 Feb 2023 08:12:24 +0000</pubDate>
      <link>https://forem.com/porthos/introducing-alghaporthos-blog-a-treasure-trove-of-insights-and-solutions-3096</link>
      <guid>https://forem.com/porthos/introducing-alghaporthos-blog-a-treasure-trove-of-insights-and-solutions-3096</guid>
      <description>&lt;p&gt;Porthos Fu, also known as &lt;a href="https://codeforces.com/profile/Algha_Porthos" rel="noopener noreferrer"&gt;Algha_Porthos&lt;/a&gt;, is a rising star in the field of computer science and engineering. He is currently a student at the Dundee International Institute of Central South University, where he is studying mechanical engineering. But what sets Porthos apart from his peers is his passion for decentralized technologies and his dedication to sharing his knowledge and experiences through his personal blog.&lt;/p&gt;

&lt;p&gt;Located at &lt;a href="https://53058.blog.luogu.org/" rel="noopener noreferrer"&gt;https://53058.blog.luogu.org/&lt;/a&gt;, Algha_Porthos' Blog is a collection of Porthos' thoughts, insights, and solutions to various problems and challenges in the field of computer science and engineering. From his musings on the latest trends in technology to his detailed explanations of complex algorithms and data structures, Porthos' blog is a valuable resource for anyone interested in staying up-to-date with the latest developments in the field.&lt;/p&gt;

&lt;p&gt;One of the highlights of Porthos' blog is his coverage of his participation in various coding competitions and challenges. He writes candidly about his successes and failures, and shares the lessons he's learned along the way. For example, in his post "April 2020 Doing Record," Porthos writes about his experiences competing in the 2020 NOIP (National Olympiad in Informatics in Provinces) and shares his tips and tricks for preparing for such competitions.&lt;/p&gt;

&lt;p&gt;Porthos also writes about his experiences and insights on various coding problems and challenges, such as his solution to the POJ2362 problem and his analysis of the CF601B problem. He provides detailed explanations of the problem and his thought process, making it easy for readers to understand and replicate his solutions.&lt;/p&gt;

&lt;p&gt;In addition to his coverage of coding competitions and challenges, Porthos also writes about a variety of other topics related to computer science and engineering. For example, in his post "Preliminary round miscellaneous knowledge points to organize," Porthos provides a concise and clear summary of various logical operators and other miscellaneous knowledge points that are useful for computer science students and engineers.&lt;/p&gt;

&lt;p&gt;In conclusion, Algha_Porthos' Blog is a must-read for anyone interested in computer science and engineering. Porthos' passion for decentralized technologies, his dedication to sharing his knowledge and experiences, and his unique perspective as a mechanical engineer make his blog a valuable resource for anyone looking to stay informed and up-to-date with the latest developments in the field.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;At &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;, we believe in providing valuable and informative content to help developers and technology enthusiasts grow in their respective fields. That's why we decided to share our latest article with the community on &lt;a href="https://dev.to/"&gt;DEV Community&lt;/a&gt;, to reach a wider audience and engage with a passionate group of developers and tech enthusiasts.&lt;/p&gt;

&lt;p&gt;We would like to invite you to take a look at our website &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB News &amp;amp; Updates&lt;/a&gt; for more content like this. &lt;a href="https://isab.run/paste/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;Our platform&lt;/a&gt; is dedicated to providing the latest and greatest in technology, coding, and software development. Our goal is to provide a space for learning, growth, and inspiration for all those who visit us.&lt;/p&gt;

&lt;p&gt;Whether you're just starting out or a seasoned veteran in the tech industry, we believe there's always room for growth and learning. With that in mind, we invite you to visit our website and see for yourself what we have to offer.&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to read this article, and we hope to see you soon at &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>crypto</category>
      <category>ethereum</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
    <item>
      <title>Building a Data Scraping Tool with Headless Chrome and Disguise Techniques</title>
      <dc:creator>Porthos Fu</dc:creator>
      <pubDate>Fri, 03 Feb 2023 08:05:11 +0000</pubDate>
      <link>https://forem.com/porthos/building-a-data-scraping-tool-with-headless-chrome-and-disguise-techniques-5amm</link>
      <guid>https://forem.com/porthos/building-a-data-scraping-tool-with-headless-chrome-and-disguise-techniques-5amm</guid>
      <description>&lt;p&gt;Building a tool using Headless Chrome with convincing disguise is a complex task that requires a good understanding of web development and web scraping. In this article, we will explore the steps required to build a tool that can gather data from LinkedIn, one of the largest professional networking sites, using Headless Chrome and how to make the tool appear as a legitimate user to LinkedIn's servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Headless Chrome
&lt;/h2&gt;

&lt;p&gt;Headless Chrome is a version of the Chrome browser that runs without a graphical user interface (GUI). This allows you to run Chrome in a terminal or command line, making it ideal for automation and web scraping tasks. Unlike traditional Chrome, which requires a user to interact with the browser, Headless Chrome can be controlled programmatically, which makes it ideal for automated data collection.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a convincing disguise
&lt;/h2&gt;

&lt;p&gt;When scraping data from websites, it's important to make sure that your tool appears as a legitimate user to the website's servers. This is because many websites have anti-scraping measures in place to prevent automated data collection. A convincing disguise involves making your tool appear as a legitimate user to the website's servers, which can help avoid detection and ensure that you're able to gather data successfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to build a tool using Headless Chrome with convincing disguise
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install Headless Chrome and required libraries: To build a tool using Headless Chrome, you'll need to install the browser and any required libraries.&lt;/li&gt;
&lt;li&gt;Create a script to launch Headless Chrome: The first step in building a tool using Headless Chrome is to create a script that launches the browser in headless mode. This script will be used to automate the process of logging into LinkedIn and collecting data.&lt;/li&gt;
&lt;li&gt;Log in to LinkedIn: Once the script launches Headless Chrome, you'll need to log into LinkedIn using a legitimate account. This will help ensure that your tool appears as a legitimate user to LinkedIn's servers.&lt;/li&gt;
&lt;li&gt;Set up a convincing disguise: To make your tool appear as a legitimate user, you'll need to set up a convincing disguise. This can include setting custom headers, changing the user agent, and using a proxy server to route your traffic through a different location.&lt;/li&gt;
&lt;li&gt;Crawl data from LinkedIn: Once you have logged in to LinkedIn and set up a convincing disguise, you can start crawling data from the site. You'll need to use a combination of web scraping techniques, such as BeautifulSoup or Scrapy, to extract the data you need.&lt;/li&gt;
&lt;li&gt;Store the data: Finally, you'll need to store the data you've collected in a format that makes it easy to analyze and use later. This could include saving the data to a CSV file or storing it in a database.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building a tool using Headless Chrome with a convincing disguise is a complex task that requires a good understanding of web development and web scraping. However, by following the steps outlined in this article, you can build a tool that can gather data from LinkedIn and help you stay one step ahead of anti-scraping measures. Before you start using the tool, it's important to make sure you understand the legal and ethical implications of web scraping and to seek permission from the website owner before collecting data.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DISCLAIMER&lt;/strong&gt;: This article is for educational and informational purposes only. The use of any information or tools mentioned in this article for unauthorized or unethical purposes is strictly prohibited. The authors of this article are not responsible for any consequences that may result from the use of the information or tools provided. It is the reader's responsibility to comply with all applicable laws and regulations while using the information or tools mentioned in this article. The information and tools provided in this article are intended for use by individuals who have a legitimate reason for accessing the information being crawled or gathered from LinkedIn. Any unauthorized or unethical use of this information or tools may result in legal consequences. By reading and using the information or tools in this article, you acknowledge and accept these terms and conditions.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;blockquote&gt;
&lt;p&gt;At &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0"&gt;ISAB&lt;/a&gt;, we believe in providing valuable and informative content to help developers and technology enthusiasts grow in their respective fields. That's why we decided to share our latest article with the community on &lt;a href="https://dev.to/"&gt;DEV Community&lt;/a&gt;, to reach a wider audience and engage with a passionate group of developers and tech enthusiasts.&lt;/p&gt;

&lt;p&gt;We would like to invite you to take a look at our website &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0"&gt;ISAB News &amp;amp; Updates&lt;/a&gt; for more content like this. &lt;a href="https://isab.run/paste/?utm_source=dev-to-08cfc3a0"&gt;Our platform&lt;/a&gt; is dedicated to providing the latest and greatest in technology, coding, and software development. Our goal is to provide a space for learning, growth, and inspiration for all those who visit us.&lt;/p&gt;

&lt;p&gt;Whether you're just starting out or a seasoned veteran in the tech industry, we believe there's always room for growth and learning. With that in mind, we invite you to visit our website and see for yourself what we have to offer.&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to read this article, and we hope to see you soon at &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0"&gt;ISAB&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>datascience</category>
      <category>scraping</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Digital Ocean's Failure to Address Abusive Traffic from their Own Network</title>
      <dc:creator>Porthos Fu</dc:creator>
      <pubDate>Fri, 03 Feb 2023 08:01:34 +0000</pubDate>
      <link>https://forem.com/porthos/digital-oceans-failure-to-address-abusive-traffic-from-their-own-network-3k2l</link>
      <guid>https://forem.com/porthos/digital-oceans-failure-to-address-abusive-traffic-from-their-own-network-3k2l</guid>
      <description>&lt;p&gt;As a user of Digital Ocean's cloud hosting services, I have been deeply disappointed by the company's failure to address abusive traffic originating from their own network, specifically from &lt;code&gt;AS14061 DIGITALOCEAN-ASN&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I have regularly encountered malicious crawlers, spammers, and exploit scanners that are clearly operating from Digital Ocean's own network. These malicious actors are causing significant harm to my website and my business, yet Digital Ocean has done little to nothing to address the problem.&lt;/p&gt;

&lt;p&gt;One of the main issues is that Digital Ocean's abuse reporting process is woefully inadequate. I have submitted multiple reports of abuse, yet have received little to no response from the company. Even worse, the abuse continues despite my repeated efforts to have it stopped.&lt;/p&gt;

&lt;p&gt;This lack of action from Digital Ocean is not only damaging to my business, but it also undermines the trust and confidence of their customers in the company's ability to provide a secure and reliable hosting service.&lt;/p&gt;

&lt;p&gt;It is unacceptable for a hosting provider to be indifferent to abuse originating from its own network. Digital Ocean has a responsibility to actively monitor and address any malicious activity on their network, and to take swift action to shut down any abusive actors.&lt;/p&gt;

&lt;p&gt;I urge Digital Ocean to take immediate action to address this problem and to improve their abuse reporting process. Until they do so, I cannot continue to trust them as a hosting provider and I will be forced to consider other options.&lt;/p&gt;

&lt;p&gt;I hope that by sharing my experience, I can raise awareness of this issue and encourage Digital Ocean to take the necessary steps to address it.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;At &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;, we believe in providing valuable and informative content to help developers and technology enthusiasts grow in their respective fields. That's why we decided to share our latest article with the community on &lt;a href="https://dev.to/"&gt;DEV Community&lt;/a&gt;, to reach a wider audience and engage with a passionate group of developers and tech enthusiasts.&lt;/p&gt;

&lt;p&gt;We would like to invite you to take a look at our website &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB News &amp;amp; Updates&lt;/a&gt; for more content like this. &lt;a href="https://isab.run/paste/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;Our platform&lt;/a&gt; is dedicated to providing the latest and greatest in technology, coding, and software development. Our goal is to provide a space for learning, growth, and inspiration for all those who visit us.&lt;/p&gt;

&lt;p&gt;Whether you're just starting out or a seasoned veteran in the tech industry, we believe there's always room for growth and learning. With that in mind, we invite you to visit our website and see for yourself what we have to offer.&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to read this article, and we hope to see you soon at &lt;a href="https://isab.run/?utm_source=dev-to-08cfc3a0" rel="noopener noreferrer"&gt;ISAB&lt;/a&gt;!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>crypto</category>
      <category>ethereum</category>
      <category>blockchain</category>
      <category>web3</category>
    </item>
  </channel>
</rss>
