<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Programmieren &#8211; Aykut Çevik</title>
	<atom:link href="https://aykutcevik.com/blog/category/programmieren/feed/" rel="self" type="application/rss+xml" />
	<link>https://aykutcevik.com/blog</link>
	<description>coding &#38; projects</description>
	<lastBuildDate>Sun, 05 Apr 2020 17:08:55 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>&#8220;IP Address &#038; Geolocation&#8221; version 2.0 released</title>
		<link>https://aykutcevik.com/blog/ip-address-geolocation-version-2-0-released/</link>
					<comments>https://aykutcevik.com/blog/ip-address-geolocation-version-2-0-released/#respond</comments>
		
		<dc:creator><![CDATA[Aykut Çevik]]></dc:creator>
		<pubDate>Sun, 05 Apr 2020 16:30:02 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[ip]]></category>
		<category><![CDATA[vpn]]></category>
		<guid isPermaLink="false">https://aykutcevik.com/blog/?p=1144</guid>

					<description><![CDATA[I&#8217;ve published a new version of my browser extension (aka webextension) &#8220;IP Address &#38; Geolocation&#8221;. Changelog for version 2: Country flags are now shown as an icon in the toolbar, thanks to @mispp, who has contributed code through GitHub This can be switched back to the default globe icon in options page The extension popup [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I&#8217;ve published a new version of my browser extension (aka webextension) &#8220;IP Address &amp; Geolocation&#8221;.</p>



<h3 class="wp-block-heading">Changelog for version 2:</h3>



<ul class="wp-block-list"><li>Country flags are now shown as an icon in the toolbar, thanks to <a rel="noreferrer noopener" href="https://github.com/mispp" target="_blank">@mispp</a>, who has contributed code through GitHub<ul><li>This can be switched back to the default globe icon in options page</li></ul></li><li>The extension popup (the small window you get when clicking on the icon in the toolbar) has now an error handling with a retry-function. A snackbar (a notification) will appear when the extension is not able to load any data. In previous versions the progressbar was just running endlessly without any feedback in a case of an error.</li><li>Images were optimized with the help of optipng.</li><li>Build script added to create packages for different browsers automatically. <a rel="noreferrer noopener" href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions" target="_blank">WebExtension</a>s were meant to be a cross-browser system for developing extensions but browsers still have different support in case of APIs and metadata files. So the script helps for testing and deploying the extension on different browsers.</li><li>Removed <code>storage</code> permission for Chrome-like browsers, Firefox still needs it to save the settings. This is a good example for the different behavior of the browsers.</li><li>Higher contrast for badge with the country code. Now the background is black and the text is white.</li></ul>



<h3 class="wp-block-heading">Install for your browser:</h3>



<ul class="wp-block-list"><li><a href="https://chrome.google.com/webstore/detail/ip-geolocator/lfncinhjhjgebfnnblppmbmkgjgifhdf" target="_blank" rel="noreferrer noopener">Chrome Webstore</a></li><li><a href="https://addons.mozilla.org/de/firefox/addon/ip-geolocator/" target="_blank" rel="noreferrer noopener">Firefox Add-ons</a></li><li><a href="https://addons.opera.com/de/extensions/details/ip-address-geolocation/" target="_blank" rel="noreferrer noopener">Opera Add-ons</a></li></ul>



<p>As of today the extension has <strong>over 140000 downloads</strong> where the most are from Opera users. One reason for the huge Opera user-base is, that my extension was trending in the &#8220;privacy &amp; security&#8221; category of Opera&#8217;s Add-on store. It is still on page 2 of the most popular extensions. So give it a try.</p>



<p>You can also find the source code on <a href="https://github.com/AykutCevik/Geolocate-IP-Browser-Extension" target="_blank" rel="noreferrer noopener">GitHub</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aykutcevik.com/blog/ip-address-geolocation-version-2-0-released/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Owncloud fail2ban setup with just one line</title>
		<link>https://aykutcevik.com/blog/owncloud-fail2ban-setup-with-just-one-line/</link>
					<comments>https://aykutcevik.com/blog/owncloud-fail2ban-setup-with-just-one-line/#respond</comments>
		
		<dc:creator><![CDATA[Aykut Çevik]]></dc:creator>
		<pubDate>Mon, 13 Jul 2015 19:36:51 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[owncloud]]></category>
		<category><![CDATA[security]]></category>
		<guid isPermaLink="false">http://aykutcevik.com/blog/?p=724</guid>

					<description><![CDATA[UPDATED: LATEST OC-VERSION 9.* Fail2ban and owncloud are great tools! To improve your security, you can ban bad guys, who want to hijack your owncloud accounts with random but common credentials, easily with fail2ban and the specific configuration for owncloud. To make this as easy as possible for you, I wrote a shell script, which will setup everything [&#8230;]]]></description>
										<content:encoded><![CDATA[<pre>UPDATED: LATEST OC-VERSION 9.*</pre>
<p>Fail2ban and owncloud are great tools!</p>
<p>To improve your security, you can ban bad guys, who want to hijack your owncloud accounts with random but common credentials, easily with fail2ban and the specific configuration for owncloud.</p>
<p>To make this as easy as possible for you, I wrote a shell script, which will setup everything with just one line:<span id="more-724"></span></p>
<p><code>curl -s "https://raw.githubusercontent.com/AykutCevik/owncloud-fail2ban/master/automated-install/install.sh" | bash</code></p>
<p>You can also use this command to update the regular expression for fail2ban, when a new version of owncloud is released. The script will check your installation and will update it automatically.</p>
<p>There is no black magic. Feel free to contribute and taking a look at the <a href="https://github.com/AykutCevik/owncloud-fail2ban" target="_blank">code at github</a>.</p>
<p>The script has been tested with <strong>owncloud 9.0 &amp; 9.1</strong> and Ubuntu, but may also run under other versions and distributions. If not, please let me know.</p>
<p>For older versions (8.2, 8.1 &amp; 8.0) of owncloud check out the <a href="https://github.com/AykutCevik/owncloud-fail2ban#owncloud-80" target="_blank">github repo</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aykutcevik.com/blog/owncloud-fail2ban-setup-with-just-one-line/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Schnelltest: WhatsApp Web offenbart &#8220;zuletzt online&#8221;-Status</title>
		<link>https://aykutcevik.com/blog/schnelltest-whatsapp-web-offenbart-zuletzt-online-status/</link>
					<comments>https://aykutcevik.com/blog/schnelltest-whatsapp-web-offenbart-zuletzt-online-status/#comments</comments>
		
		<dc:creator><![CDATA[Aykut Çevik]]></dc:creator>
		<pubDate>Thu, 22 Jan 2015 16:25:00 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[last]]></category>
		<category><![CDATA[seen]]></category>
		<category><![CDATA[WhatsApp]]></category>
		<guid isPermaLink="false">http://aykutcevik.com/blog/?p=707</guid>

					<description><![CDATA[Sofern man selbst in WhatsApp unter den Datenschutz-Einstellungen den &#8220;Zuletzt online&#8221;-Status anderen gegenüber verbirgt, kann man diesen von anderen auch nicht einsehen. WhatsApp Web zeigt diese Information im DOM der Seite web.whatsapp.com allerdings an &#8211; manchmal jedoch zu schnell fürs Auge. Abhilfe schafft ein kleines Inject über die Dev-Konsole des Browsers, um in der Konsole den [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Sofern man selbst in WhatsApp unter den Datenschutz-Einstellungen den &#8220;Zuletzt online&#8221;-Status anderen gegenüber verbirgt, kann man diesen von anderen auch nicht einsehen.</p>
<p>WhatsApp Web zeigt diese Information im DOM der Seite <a title="WhatsApp Web" href="https://web.whatsapp.com/" target="_blank" rel="noopener">web.whatsapp.com</a> allerdings an &#8211; manchmal jedoch zu schnell fürs Auge. Abhilfe schafft ein kleines Inject über die Dev-Konsole des Browsers, um in der Konsole den Status der anderen anzeigen zu lassen.<br />
<span id="more-707"></span></p>
<pre>var script = document.createElement('script');script.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js";document.getElementsByTagName('head')[0].appendChild(script);

$(".app").bind('DOMSubtreeModified', function(e){
     $("span[title*='zuletzt']").each(function(){
          console.log($(this).html());
     });
});</pre>
<p>Ergebnis sind die Status im Log der Konsole:</p>
<p><a href="https://aykutcevik.com/blog/media/whatsapp_leak.png"><img decoding="async" class="aligncenter wp-image-709 size-thumbnail" src="https://aykutcevik.com/blog/media/whatsapp_leak-150x150.png" alt="WhatsApp &quot;zuletzt online&quot;" width="150" height="150" /></a></p>
<p>Allerdings cached die Webseite viel &#8211; d.h. nach der nächsten Aktualisierung eines Kontaktes wird auch erst der &#8220;zuletzt online&#8221;-Status ersichtlich. Wann das aber geschieht, konnte ich im Schnelltest noch nicht rausfinden. Den LocalStorage zu leeren und das Aktualisieren zu forcieren wäre eine Möglichkeit.</p>
<p>Viel Spaß beim Stalken <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://aykutcevik.com/blog/schnelltest-whatsapp-web-offenbart-zuletzt-online-status/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Chrome &#8216;IP Geolocator&#8217; extension</title>
		<link>https://aykutcevik.com/blog/chrome-ip-geolocator-extension/</link>
					<comments>https://aykutcevik.com/blog/chrome-ip-geolocator-extension/#respond</comments>
		
		<dc:creator><![CDATA[Aykut Çevik]]></dc:creator>
		<pubDate>Sat, 20 Sep 2014 08:25:57 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[github]]></category>
		<guid isPermaLink="false">http://aykutcevik.com/blog/?p=697</guid>

					<description><![CDATA[I have released a new Chrome extension: IP Geolocator shows your IP address and also geolocational informations about your IP address. A badge of your current country is shown on the icon, which will refresh every 3s. So you can easily see, if you have a broken VPN or proxy connection when the country-code changes [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I have released a new Chrome extension:</p>
<blockquote>
<pre class="webstore-Vb-nd-bc-Db-Wb">IP Geolocator shows your IP address and also geolocational informations about your IP address.

A badge of your current country is shown on the icon, which will refresh every 3s. So you can easily see, if you have a broken VPN or proxy connection when the country-code changes unexpectedly.

Also you can display your position in Google Maps.

Please feel free to make some requests at github:
https://github.com/AykutCevik/Geolocate-IP-Browser-Extension</pre>
</blockquote>
<p>Find it on <a title="IP Geolocator" href="https://chrome.google.com/webstore/detail/ip-geolocator/lfncinhjhjgebfnnblppmbmkgjgifhdf" target="_blank">Chrome Web Store</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aykutcevik.com/blog/chrome-ip-geolocator-extension/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installing AMQP through PECL</title>
		<link>https://aykutcevik.com/blog/installing-amqp-through-pecl/</link>
					<comments>https://aykutcevik.com/blog/installing-amqp-through-pecl/#respond</comments>
		
		<dc:creator><![CDATA[Aykut Çevik]]></dc:creator>
		<pubDate>Thu, 21 Aug 2014 11:50:47 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[amqp]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://aykutcevik.com/blog/?p=692</guid>

					<description><![CDATA[It seems to be a problem to find an easy to use solution to install AMQP support for PHP through PECL. As I already mentioned, I used to build the client library on my own and it worked like a charm. If you are having troubles installing AMQP, use the following steps to get that [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>It seems to be a problem to find an easy to use solution to install AMQP support for PHP through PECL. As I already <a href="http://stackoverflow.com/a/14459813/370193" target="_blank">mentioned</a>, I used to build the client library on my own and it worked like a charm.</p>
<p>If you are having troubles installing AMQP, use the following steps to get that thingy working:</p>
<p><span id="more-692"></span></p>
<blockquote>
<ul>
<li><span style="font-family: Consolas, Monaco, monospace;"><span style="font-size: 12px; line-height: 18px;">git clone git://github.com/alanxz/rabbitmq-c.git</span></span></li>
<li><span style="font-family: Consolas, Monaco, monospace;"><span style="font-size: 12px; line-height: 18px;">cd rabbitmq-c</span></span></li>
<li><span style="font-family: Consolas, Monaco, monospace;"><span style="font-size: 12px; line-height: 18px;">git submodule init</span></span></li>
<li><span style="font-family: Consolas, Monaco, monospace;"><span style="font-size: 12px; line-height: 18px;">git submodule update</span></span></li>
<li><span style="font-family: Consolas, Monaco, monospace;"><span style="font-size: 12px; line-height: 18px;">autoreconf -i &amp;&amp; ./configure &amp;&amp; make &amp;&amp; sudo make install</span></span></li>
<li><span style="font-family: Consolas, Monaco, monospace;"><span style="font-size: 12px; line-height: 18px;">sudo pecl install amqp<br />
</span></span></li>
</ul>
</blockquote>
<p>Please be sure, that you always copy bash commands to an editor before using them in your terminal. Some sites may hide addtional code in their posts to infect you.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://aykutcevik.com/blog/installing-amqp-through-pecl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Network Indicator for Chrome!</title>
		<link>https://aykutcevik.com/blog/network-indicator-for-chrome/</link>
					<comments>https://aykutcevik.com/blog/network-indicator-for-chrome/#respond</comments>
		
		<dc:creator><![CDATA[Aykut Çevik]]></dc:creator>
		<pubDate>Tue, 01 Oct 2013 13:16:22 +0000</pubDate>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">http://aykutcevik.com/blog/?p=651</guid>

					<description><![CDATA[This extension shows your incoming network data and requests in an awesome view. It's still in development (beta) but you can find it on the chrome webstore! Feel free to make some requests at github: https://github.com/AykutCevik/ChromeNetworkIndicator]]></description>
										<content:encoded><![CDATA[<pre>This extension shows your incoming network data and requests in an awesome view. It's  still in development (beta) but you can find it on the <a title="Network Indicator" href="https://chrome.google.com/webstore/detail/network-indicator/cemcnpjeepmkfaceemkgimgckjfcfmio" target="_blank">chrome webstore</a>!

Feel free to make some requests at github:
<a href="https://github.com/AykutCevik/ChromeNetworkIndicator" target="_blank">https://github.com/AykutCevik/ChromeNetworkIndicator</a></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://aykutcevik.com/blog/network-indicator-for-chrome/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Aero TreeView like Windows Explorer &#8211; C#</title>
		<link>https://aykutcevik.com/blog/aero-treeview-like-windows-explorer-c/</link>
					<comments>https://aykutcevik.com/blog/aero-treeview-like-windows-explorer-c/#respond</comments>
		
		<dc:creator><![CDATA[Aykut Çevik]]></dc:creator>
		<pubDate>Wed, 08 Dec 2010 19:07:19 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Aero]]></category>
		<category><![CDATA[Controls]]></category>
		<category><![CDATA[Flickerfree]]></category>
		<category><![CDATA[TreeView]]></category>
		<guid isPermaLink="false">http://aykutcevik.com/?p=201</guid>

					<description><![CDATA[Mit diesem Snippet, eine Modifikation der System.Windows.Forms.TreeView, könnt ihr eure TreeView wie die im Windows Explorer darstellen. Das &#8220;Control&#8221; ist flackerfrei und unterstützt auch ältere Systeme vor Vista und Windows 7. Der &#8220;Windows Explorer&#8221;-Stil ist jedoch erst ab Vista verfügbar. Einige Funktionen: Die &#8220;ShowPlusMinus&#8221;-Eigenschaft wird wie im Explorer ein- und ausgeblendet, sobald das Control den [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Mit diesem Snippet, eine Modifikation der <strong>System.Windows.Forms.TreeView</strong>, könnt ihr eure TreeView wie die im Windows Explorer darstellen.</p>
<p>Das &#8220;Control&#8221; ist flackerfrei und unterstützt auch ältere Systeme vor Vista und Windows 7. Der &#8220;Windows Explorer&#8221;-Stil ist jedoch erst ab Vista verfügbar.</p>
<p><span id="more-201"></span>Einige Funktionen:</p>
<ul>
<li>Die <strong>&#8220;ShowPlusMinus&#8221;-Eigenschaft wird wie im Explorer ein- und ausgeblendet</strong>, sobald das Control den Fokus erhält bzw. verliert.</li>
<li>Die horizontale Scrollbar entfällt, die <strong>TreeView scrollt automatisch</strong>.</li>
<li>Die Markierung einer &#8220;Node&#8221; ist wie im Windows Explorer <strong>grafisch hochwertiger</strong>.</li>
<li>Die TreeView ist <strong>flackerfrei</strong>.</li>
</ul>
<p>Hier der Code der<strong> TreeViewAero.cs</strong>:</p>
<pre>using System.ComponentModel;
using System.Drawing;
using System.Runtime.InteropServices;

namespace System.Windows.Forms
{
    /// &lt;summary&gt;
    /// A stylish treeview like the one from Windows Explorer 
    /// &lt;/summary&gt;
    [DesignerCategory("Code")]
    [ToolboxBitmap(typeof(TreeView))]
    public class TreeViewAero : TreeView
    {
        public TreeViewAero()
        {
            // sets double buffering for flickerfree treeview
            base.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true);

            // like the one in Windows Explorer
            base.ShowLines = false;
            base.HideSelection = false;
        }

        /// &lt;summary&gt;
        /// OnPaint-Method, modified for UserPaint-Flag at Style
        /// &lt;/summary&gt;
        /// &lt;param name="e"&gt;base PaintEventArgs&lt;/param&gt;
        protected override void OnPaint(PaintEventArgs e)
        {
            if (GetStyle(ControlStyles.UserPaint))
            {
                // create new message
                Message m = new Message();

                // content handle
                m.HWnd = this.Handle;

                // message itself
                m.Msg = 0x0318; // WM_PRINTCLIENT message

                // params
                m.WParam = e.Graphics.GetHdc();
                m.LParam = (IntPtr)4; // PRF_CLIENT message

                // send this message
                DefWndProc(ref m);

                // release hdc
                e.Graphics.ReleaseHdc(m.WParam);
            }

            // do the basics
            base.OnPaint(e);
        }

        /// &lt;summary&gt;
        /// OnHandleCreated-Method
        /// &lt;/summary&gt;
        /// &lt;param name="e"&gt;base EventArgs&lt;/param&gt;
        protected override void OnHandleCreated(EventArgs e)
        {
            // do the basics
            base.OnHandleCreated(e);

            // set the theme of this treeview from "explorer" (application name)
            NativeMethods.SetWindowTheme(base.Handle, "explorer", null);

            if (Environment.OSVersion.Version.Major &gt; 5) // greater than xp
            {
                // send some messages for the stylish effects
                IntPtr lParam = (IntPtr)(NativeMethods.SendMessage(base.Handle, 0x112d, IntPtr.Zero, IntPtr.Zero).ToInt32() | 0x60);
                NativeMethods.SendMessage(base.Handle, 0x112c, IntPtr.Zero, lParam);
            }
        }

        /// &lt;summary&gt;
        /// CreateParams-Property
        /// &lt;/summary&gt;
        protected override CreateParams CreateParams
        {
            get
            {
                // get base params
                CreateParams createParams = base.CreateParams;

                if (Environment.OSVersion.Version.Major &gt; 5) // greater than xp
                {
                    // a bitwise logical OR operation
                    createParams.Style |= 0x8000;
                }

                // return the modified value
                return createParams;
            }
        }
    }

    public abstract class NativeMethods
    {
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

        [DllImport("uxtheme.dll", ExactSpelling = true, CharSet = CharSet.Unicode)]
        public static extern int SetWindowTheme(IntPtr hWnd, String pszSubAppName, String pszSubIdList);
    }
}
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://aykutcevik.com/blog/aero-treeview-like-windows-explorer-c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>