Mobile Blog Multi-User http://admin.anggit.com/ High Performance Code by anggit.com Sun, 08 Oct 2017 22:06:24 +0700 Mobile Blog Multi-User v.1.0 en-ID Firefox ESR adalah/blog/post/402/firefox-esr-adalah.htmlSun, 08 Oct 2017 22:06:24 +0700/blog/post/402/firefox-esr-adalah.html<a href="http://https://i.imgur.com/EnEXywM.png"><img src="http://i.imgur.com/EnEXywMs.png" alt="img" height="90px" /></a><br /><br />Apa itu Firefox ESR?<br />ESR (Extended Support Release) adalah edisi browser Mozilla Firefox dengan dukungan lebih lama dari edisi standar.<br /><br /><a href="http://www.mozilla.org/media/img/firefox/organizations/release-overview.6ada2b83ca80.png"><img src="http://www.mozilla.org/media/img/firefox/organizations/release-overview.6ada2b83ca80.png" alt="img" height="90px" /></a><br /><br />Setiap kali versi mayor pada edisi standar naik, misal 57 ke 58, pada edisi ESR versi mayor tetap dan hanya versi minor yang dinaikkan, misal 52.5 ke 52.6.<br /><br />Kenaikan versi pada edisi standar biasanya menambahkan fitur dan update keamanan (bugfix). Pada saat yang bersamaan, bugfix juga diterapkan (backport) ke edisi ESR. Namun tidak menambahkan fitur. Penambahan fitur kadang menimbulkan <i>regression</i> (bug baru karena penambahan kode, yang tidak terjadi pada versi sebelumnya). Itulah mengapa jika menggunakan edisi standar harus selalu <i>uptodate</i>.<br /><br />Bagi pengguna Enterprise yang lebih menginginkan stabilitas daripada fitur baru, bisa download Firefox 52.x ESR disini:<br /><a href="https://www.mozilla.org/en-US/firefox/organizations/all/">https://www.mozilla.org/en-US/firefox/organizations/all/</a><br /><br />Versi terakhir dari Firefox 45.x ESR disini:<br /><a href="https://ftp.mozilla.org/pub/firefox/releases/45.9.0esr/">https://ftp.mozilla.org/pub/firefox/releases/45.9.0esr/</a><br /><br />(admin)Konfigurasi JACK Audio di Debian (Linux)/blog/post/401/konfigurasi-jack-audio-di-debian-linux.htmlSat, 08 Jul 2017 18:56:59 +0700/blog/post/401/konfigurasi-jack-audio-di-debian-linux.htmlAFAIK pada Debian, standarnya menggunakan <a href="http://en.wikipedia.org/wiki/PulseAudio">PulseAudio</a> sebagai server suara diatas sub sistem <a href="http://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture">ALSA</a>. Pada kebutuhan standar, PulseAudio dirasa cukup. Namun disaat kita bermain pada profesional audio. PulseAudio memberikan masalah seperti latency, distorsi sinyal, dsb yang menurut saya tidak stabil digunakan saat kita menggunakan program seperti fluidsynth, dll.<br /><br />Setelah mengalami kendala-kendala tsb saya menemukan solusi dengan mengganti server audio ke <a href="http://en.wikipedia.org/wiki/JACK_Audio_Connection_Kit">JACK</a>. Yang saya rasakan JACK lebih stabil dibanding PulseAudio.<br /><br />Namun timbul masalah baru. Saat server JACK (jackd) aktif, program yang tidak mendukung output audio ke jack seperti quodlibet (pemutar musik), menjadi silent. VLC juga menjadi silent namun VLC memiliki plugin untuk konek ke jack yaitu <b>vlc-plugin-jack</b> yang tersedia di repository. Untuk SMPlayer sepertinya sudah dilengkapi support jack (tersedia di Pengaturan). Untuk program-program yang mendukung JACK bisa dilihat di <a href="http://jackaudio.org/applications/">http://jackaudio.org/applications/</a><br /><br />Untuk program yang standarnya menggunakan PulseAudio kita gunakan <b>pulseaudio-module-jack</b>. Setelah instal paket tsb lalu edit <b>/etc/pulse/default.pa</b>, cari baris #load-module module-alsa-sink (pada bagian ### Load audio drivers statically), paste dua baris berikut setelah baris tsb:<br />[<a id="code-1" href="/1/rss.xml?code_textarea=1#code-1">Textarea</a>][<a href="/1/rss.xml?code_raw=1">RAW</a>][<a href="/1/rss.xml?code_download=1">Download</a>]</p><ol class="code"><li class="line number1 alt1">load-module&nbsp;module-jack-sink</li><li class="line number2 alt2">load-module&nbsp;module-jack-source</li></ol><p><br />Untuk program seperti quodlibet atau yang menggunakan gstreamer, sepertinya perlu instal juga <b>gstreamer1.0-pulseaudio</b> agar bisa &#039;konek&#039; via <b>pulseaudio-module-jack</b>. Karena tidak ada atau belum tersedia plugin jack secara langsung untuk gstreamer. CMIIW.<br /><br />Jadi urutan kerjanya mungkin seperti ini:<br />quodlibet -&gt; gstreamer1.0-pulseaudio -&gt; pulseaudio-module-jack -&gt; jackd (server JACK) -&gt; ALSA<br />VLC -&gt; vlc-plugin-jack -&gt; jackd (server JACK) -&gt; ALSA<br />SMPlayer -&gt; jackd (server JACK) -&gt; ALSA<br /><br />Akhirnya setelah instal <b>pulseaudio-module-jack</b> tsb masalah teratasi. Semua player menjadi tidak silent meskipun tidak mengatur output audio ke jack, namun alangkah baiknya atur ke jack bila sudah menggunakan jackd sebagai server suara.<br /><br />Oops ini yang paling penting, instal <b>jackd</b> nama paketnya <b>jackd2</b>, lalu taruh di start-up:<br />[<a id="code-2" href="/1/rss.xml?code_textarea=1#code-2">Textarea</a>][<a href="/1/rss.xml?code_raw=2">RAW</a>][<a href="/1/rss.xml?code_download=2">Download</a>]</p><ol class="code"><li class="line number1 alt1">jackd&nbsp;-dalsa&nbsp;-dhw:0&nbsp;-r44100&nbsp;-p1024&nbsp;-n2&nbsp;&amp;</li></ol><p><br />Atau jalankan via GUI, instal <b>qjackctl</b>. Tapi saya lebih prefer taruh di start-up.<br /><br />(admin.anggit.com)Mengenal dan Menggunakan Stream di PHP/blog/post/400/mengenal-dan-menggunakan-stream-di-php.htmlMon, 02 Jan 2017 07:09:12 +0700/blog/post/400/mengenal-dan-menggunakan-stream-di-php.htmlApa itu stream? bila diterjemahkan ke bahasa indonesia, stream adalah &quot;aliran&quot;. Jika anda membayangkan streaming audio atau video, memang tidak jauh dari konsep itu. Di PHP, <b>stream</b> adalah sebuah obyek sumber daya (resource), yang menunjukkan perilaku dapat mengalir.<br /><br />Sebelum kita membahas tentang penggunaan stream, kita harus mengetahui sebuah hal yang berkaitan dengan stream yaitu <b>wrapper</b>. Wrapper adalah kode tambahan yang memberi tahu stream bagaimana cara menangani suatu protokol / encoding. Wrapper menggunakan syntax seperti URL. Seperti: <b>file://</b> yang merupakan <b>standar wrapper</b> yang digunakan PHP untuk mengakses filesystem lokal. readfile(&#039;path/to/file.ext&#039;); adalah sama dengan readfile(&#039;file://path/to/file.ext&#039;);<br /><br />Untuk melihat wrapper apa saja yang tersedia (built-in) di PHP:<br />[<a id="code-3" href="/1/rss.xml?code_textarea=1#code-3">Textarea</a>][<a href="/1/rss.xml?code_raw=3">RAW</a>][<a href="/1/rss.xml?code_download=3">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #ff1493;">print_r</span>(<span style="color: #ff1493;">stream_get_wrappers</span>());</li><li class="line number2 alt2">/*</li><li class="line number3 alt1">Array</li><li class="line number4 alt2">(</li><li class="line number5 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=&gt;&nbsp;https</li><li class="line number6 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=&gt;&nbsp;ftps</li><li class="line number7 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[2]&nbsp;=&gt;&nbsp;compress.zlib</li><li class="line number8 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[3]&nbsp;=&gt;&nbsp;compress.bzip2</li><li class="line number9 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[4]&nbsp;=&gt;&nbsp;php</li><li class="line number10 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[5]&nbsp;=&gt;&nbsp;file</li><li class="line number11 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[6]&nbsp;=&gt;&nbsp;glob</li><li class="line number12 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[7]&nbsp;=&gt;&nbsp;data</li><li class="line number13 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[8]&nbsp;=&gt;&nbsp;http</li><li class="line number14 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[9]&nbsp;=&gt;&nbsp;ftp</li><li class="line number15 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[10]&nbsp;=&gt;&nbsp;zip</li><li class="line number16 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[11]&nbsp;=&gt;&nbsp;phar</li><li class="line number17 alt1">)</li><li class="line number18 alt2">*/</li></ol><p><br />Kembali ke stream, stream direferensikan sebagai <b>scheme://target</b>, <b>scheme</b> sendiri adalah nama wrapper dan <b>target</b> tergantung dari wrapper yang digunakan, umumnya adalah jalur dan nama file yang dituju.<br /><br />Setelah cukup mengetahui apa itu stream di PHP, kita bisa mulai membuka potensi pada stream ini. Kali ini kita akan mencoba menerapkan <b>filter</b> pada stream. Untuk lebih jelasnya perhatikan kode berikut ini:<br /><br />[<a id="code-4" href="/1/rss.xml?code_textarea=1#code-4">Textarea</a>][<a href="/1/rss.xml?code_raw=4">RAW</a>][<a href="/1/rss.xml?code_download=4">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #aa7700;">$string</span>&nbsp;=&nbsp;&#039;Kompress&nbsp;aku...&#039;;</li><li class="line number2 alt2"><span style="color: #aa7700;">$compressed</span>&nbsp;=&nbsp;<span style="color: #ff1493;">gzdeflate</span>(<span style="color: #aa7700;">$string</span>,&nbsp;9);</li><li class="line number3 alt1"><span style="color: #aa7700;">$fh</span>&nbsp;=&nbsp;<span style="color: #ff1493;">fopen</span>(&#039;file.gz&#039;,&nbsp;&#039;w&#039;);</li><li class="line number4 alt2"><span style="color: #ff1493;">fwrite</span>(<span style="color: #aa7700;">$fh</span>,&nbsp;<span style="color: #aa7700;">$compressed</span>);</li><li class="line number5 alt1"><span style="color: #ff1493;">fclose</span>(<span style="color: #aa7700;">$fh</span>);</li><li class="line number6 alt2"></li><li class="line number7 alt1"><span style="color: #aa7700;">$fh</span>&nbsp;=&nbsp;<span style="color: #ff1493;">fopen</span>(&#039;file.gz&#039;,&nbsp;&#039;r&#039;);</li><li class="line number8 alt2"><span style="color: #aa7700;">$read</span>&nbsp;=&nbsp;<span style="color: #ff1493;">fread</span>(<span style="color: #aa7700;">$fh</span>,&nbsp;<span style="color: #ff1493;">filesize</span>(&#039;file.gz&#039;));</li><li class="line number9 alt1"><span style="color: #aa7700;">$uncompressed</span>&nbsp;=&nbsp;<span style="color: #ff1493;">gzinflate</span>(<span style="color: #aa7700;">$read</span>);</li><li class="line number10 alt2"><span style="color: #ff1493;">fclose</span>(<span style="color: #aa7700;">$fh</span>);</li><li class="line number11 alt1">echo&nbsp;<span style="color: #aa7700;">$uncompressed</span>;&nbsp;//&nbsp;Kompress&nbsp;aku...</li></ol><p><br />Kode diatas suatu proses <b>compress</b> dan <b>decompress</b> menggunakan fungsi gzdeflate() dan gzinflate() (Lihat: <a href="http://admin.anggit.com/1/blog/post/269/beberapa-fungsi-compress-di-php.html">Beberapa Fungsi Compress di PHP</a>). Fungsi ini akan memuat semua konten dulu ke memory sehingga tidak cocok digunakan untuk compress dan decompress data besar. Kita bisa menggantinya dengan cara menerapkan filter pada stream yang akan bekerja <b>ketika</b> proses stream berlangsung (on the fly).<br /><br />Untuk melihat filter built-in di PHP:<br />[<a id="code-5" href="/1/rss.xml?code_textarea=1#code-5">Textarea</a>][<a href="/1/rss.xml?code_raw=5">RAW</a>][<a href="/1/rss.xml?code_download=5">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #ff1493;">print_r</span>(<span style="color: #ff1493;">stream_get_filters</span>());</li><li class="line number2 alt2">/*</li><li class="line number3 alt1">Array</li><li class="line number4 alt2">(</li><li class="line number5 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[0]&nbsp;=&gt;&nbsp;zlib.*</li><li class="line number6 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[1]&nbsp;=&gt;&nbsp;bzip2.*</li><li class="line number7 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[2]&nbsp;=&gt;&nbsp;convert.iconv.*</li><li class="line number8 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[3]&nbsp;=&gt;&nbsp;string.rot13</li><li class="line number9 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[4]&nbsp;=&gt;&nbsp;string.toupper</li><li class="line number10 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[5]&nbsp;=&gt;&nbsp;string.tolower</li><li class="line number11 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[6]&nbsp;=&gt;&nbsp;string.strip_tags</li><li class="line number12 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[7]&nbsp;=&gt;&nbsp;convert.*</li><li class="line number13 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[8]&nbsp;=&gt;&nbsp;consumed</li><li class="line number14 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[9]&nbsp;=&gt;&nbsp;dechunk</li><li class="line number15 alt1">&nbsp;&nbsp;&nbsp;&nbsp;[10]&nbsp;=&gt;&nbsp;mcrypt.*</li><li class="line number16 alt2">&nbsp;&nbsp;&nbsp;&nbsp;[11]&nbsp;=&gt;&nbsp;mdecrypt.*</li><li class="line number17 alt1">)</li><li class="line number18 alt2">*/</li></ol><p><br />Dari data diatas kita ketahui bahwa filter zlib tersedia. Maka kode bisa kita ganti menjadi berikut, menggunakan <a href="http://php.net/manual/en/function.stream-filter-append.php">stream_filter_append()</a>:<br />[<a id="code-6" href="/1/rss.xml?code_textarea=1#code-6">Textarea</a>][<a href="/1/rss.xml?code_raw=6">RAW</a>][<a href="/1/rss.xml?code_download=6">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #aa7700;">$string</span>&nbsp;=&nbsp;&#039;Kompress&nbsp;aku...&#039;;</li><li class="line number2 alt2"><span style="color: #aa7700;">$fh</span>&nbsp;=&nbsp;<span style="color: #ff1493;">fopen</span>(&#039;file.gz&#039;,&nbsp;&#039;w&#039;);</li><li class="line number3 alt1"><span style="color: #ff1493;">stream_filter_append</span>(<span style="color: #aa7700;">$fh</span>,&nbsp;&#039;zlib.deflate&#039;,&nbsp;STREAM_FILTER_WRITE,&nbsp;9);</li><li class="line number4 alt2"><span style="color: #ff1493;">fwrite</span>(<span style="color: #aa7700;">$fh</span>,&nbsp;<span style="color: #aa7700;">$string</span>);</li><li class="line number5 alt1"><span style="color: #ff1493;">fclose</span>(<span style="color: #aa7700;">$fh</span>);</li><li class="line number6 alt2"></li><li class="line number7 alt1"><span style="color: #aa7700;">$fh</span>&nbsp;=&nbsp;<span style="color: #ff1493;">fopen</span>(&#039;file.gz&#039;,&nbsp;&#039;r&#039;);</li><li class="line number8 alt2"><span style="color: #ff1493;">stream_filter_append</span>(<span style="color: #aa7700;">$fh</span>,&nbsp;&#039;zlib.inflate&#039;,&nbsp;STREAM_FILTER_READ);</li><li class="line number9 alt1"><span style="color: #ff1493;">fpassthru</span>(<span style="color: #aa7700;">$fh</span>);&nbsp;//&nbsp;Kompress&nbsp;aku...</li><li class="line number10 alt2"><span style="color: #ff1493;">fclose</span>(<span style="color: #aa7700;">$fh</span>);</li><li class="line number11 alt1"></li></ol><p><br />Atau menerapkan filter dengan wrapper <a href="php://">php://</a><br /><br />[<a id="code-7" href="/1/rss.xml?code_textarea=1#code-7">Textarea</a>][<a href="/1/rss.xml?code_raw=7">RAW</a>][<a href="/1/rss.xml?code_download=7">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #aa7700;">$string</span>&nbsp;=&nbsp;&#039;Kompress&nbsp;aku...&#039;;</li><li class="line number2 alt2"><span style="color: #aa7700;">$fh</span>&nbsp;=&nbsp;<span style="color: #ff1493;">fopen</span>(&#039;php://filter/write=zlib.deflate/resource=file.gz&#039;,&nbsp;&#039;w&#039;);</li><li class="line number3 alt1"><span style="color: #ff1493;">fwrite</span>(<span style="color: #aa7700;">$fh</span>,&nbsp;<span style="color: #aa7700;">$string</span>);</li><li class="line number4 alt2"><span style="color: #ff1493;">fclose</span>(<span style="color: #aa7700;">$fh</span>);</li><li class="line number5 alt1"></li><li class="line number6 alt2"><span style="color: #aa7700;">$fh</span>&nbsp;=&nbsp;<span style="color: #ff1493;">fopen</span>(&#039;php://filter/read=zlib.inflate/resource=file.gz&#039;,&nbsp;&#039;r&#039;);</li><li class="line number7 alt1"><span style="color: #ff1493;">fpassthru</span>(<span style="color: #aa7700;">$fh</span>);&nbsp;//&nbsp;Kompress&nbsp;aku...</li><li class="line number8 alt2"><span style="color: #ff1493;">fclose</span>(<span style="color: #aa7700;">$fh</span>);</li><li class="line number9 alt1"></li></ol><p><br />Stream juga bisa diterapkan di fungsi-fungsi filesystem lain seperti file_get_contents(), file_put_contents(), dll.<br /><br />Selamat mencoba <img src="/smilies/happy.gif" alt=":)" /><br /><br />(admin.anggit.com)Blog Updated!/blog/post/398/blog-updated.htmlMon, 12 Dec 2016 19:47:33 +0700/blog/post/398/blog-updated.htmlTernyata sudah 4 tahun tidak melakukan update! Tidak terasa waktu berjalan begitu cepat. Kali ini saya sempatkan untuk menulis di #changelog <img src="/smilies/happy.gif" alt=":)" /><br /><br />* Update <a href="http://admin.anggit.com/blog/post/397/php-upload-ke-imgur-com-menggunakan-api-v3.html">imgur API v3</a><br />* Code Highlighter ditambah dengan mode <b>RAW</b> dan <b>Download</b> agar semakin mempermudah dalam berbagi kode<br />* Penambahan &quot;virtual&quot; attachment format zip untuk code, code bisa di download sebagai zip secara <i>on the fly</i><br /><br />Demo:<br /><br /><b>changelog.txt</b> [<a id="code-8" href="/1/rss.xml?code_textarea=1#code-8">Textarea</a>][<a href="/1/rss.xml?code_raw=8">RAW</a>][<a href="/1/rss.xml?code_download=8">Download</a>]</p><ol class="code"><li class="line number1 alt1">*&nbsp;Update&nbsp;imgur&nbsp;API&nbsp;v3</li><li class="line number2 alt2">*&nbsp;Code&nbsp;Highlighter&nbsp;ditambah&nbsp;dengan&nbsp;mode&nbsp;RAW&nbsp;dan&nbsp;Download&nbsp;agar&nbsp;semakin&nbsp;mempermudah&nbsp;dalam&nbsp;berbagi&nbsp;kode</li></ol><p><b>changelog1.txt</b> [<a id="code-9" href="/1/rss.xml?code_textarea=1#code-9">Textarea</a>][<a href="/1/rss.xml?code_raw=9">RAW</a>][<a href="/1/rss.xml?code_download=9">Download</a>]</p><ol class="code"><li class="line number1 alt1">*&nbsp;Penambahan&nbsp;&quot;virtual&quot;&nbsp;attachment&nbsp;format&nbsp;zip&nbsp;untuk&nbsp;code,&nbsp;code&nbsp;bisa&nbsp;di&nbsp;download&nbsp;sebagai&nbsp;zip&nbsp;secara&nbsp;on&nbsp;the&nbsp;fly</li></ol><p><br />Terimakasih sudah membaca <img src="/smilies/happy.gif" alt=":)" />[PHP] Upload ke imgur.com menggunakan API v3/blog/post/397/php-upload-ke-imgur-com-menggunakan-api-v3.htmlSat, 10 Dec 2016 13:38:12 +0700/blog/post/397/php-upload-ke-imgur-com-menggunakan-api-v3.htmlSetelah sekian lama fitur upload gambar di blog ini dibiarkan tidak berfungsi karena masih menggunakan imgur <a href="http://admin.anggit.com/blog/post/221/upload-ke-imgur-com-secara-anonymous-via-php.html">API v2</a>, akhirnya ada sedikit semangat untuk update ke versi 3. Saya akan share contoh skrip PHP nya. Saya buat menjadi satu file namun mudah dipahami. Bisa langsung dijalankan di server. Didalamnya juga terdapat cara untuk mendapatkan link thumbnail pada API v3 ini, yang berbeda dari API v2. [<a href="http://anggit.com/imgur.php">Demo</a>]<br />Langsung saja berikut kode nya:<br /><br /><b>imgur.php</b> [<a id="code-10" href="/1/rss.xml?code_textarea=1#code-10">Textarea</a>][<a href="/1/rss.xml?code_raw=10">RAW</a>][<a href="/1/rss.xml?code_download=10">Download</a>]</p><ol class="code"><li class="line number1 alt1">&lt;?php</li><li class="line number2 alt2"></li><li class="line number3 alt1">#&nbsp;imgur&nbsp;Uploader&nbsp;(v3.0.1)</li><li class="line number4 alt2">#&nbsp;Made&nbsp;only&nbsp;for&nbsp;educational&nbsp;purposes</li><li class="line number5 alt1">#&nbsp;(c)&nbsp;20161209&nbsp;nggit</li><li class="line number6 alt2"></li><li class="line number7 alt1"><span style="color: #aa7700;">$url</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&#039;https://api.imgur.com/3/image.json&#039;;&nbsp;//&nbsp;API&nbsp;endpoints,&nbsp;info:&nbsp;https://api.imgur.com/endpoints/image#image-upload</li><li class="line number8 alt2"><span style="color: #aa7700;">$client_id</span>&nbsp;=&nbsp;&#039;d4fc5abb11c0ac3&#039;;&nbsp;//&nbsp;Get&nbsp;client_id&nbsp;here:&nbsp;https://api.imgur.com/#registerapp</li><li class="line number9 alt1"></li><li class="line number10 alt2">switch&nbsp;(<span style="color: #aa7700;">$_SERVER</span>[&#039;QUERY_STRING&#039;])&nbsp;{</li><li class="line number11 alt1">&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;&#039;upload&#039;:</li><li class="line number12 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(<span style="color: #aa7700;">$file</span>&nbsp;=&nbsp;<span style="color: #ff1493;">isset</span>(<span style="color: #aa7700;">$_FILES</span>[&#039;file&#039;])&nbsp;?&nbsp;<span style="color: #aa7700;">$_FILES</span>[&#039;file&#039;]&nbsp;:&nbsp;false)&nbsp;{</li><li class="line number13 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(<span style="color: #aa7700;">$file</span>[&#039;error&#039;]&nbsp;==&nbsp;UPLOAD_ERR_NO_FILE)&nbsp;{</li><li class="line number14 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">exit</span>(&#039;Nothing&nbsp;to&nbsp;upload?&#039;);</li><li class="line number15 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li><li class="line number16 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(<span style="color: #aa7700;">$file</span>[&#039;size&#039;]&nbsp;&gt;&nbsp;1000000&nbsp;||&nbsp;<span style="color: #aa7700;">$file</span>[&#039;error&#039;]&nbsp;==&nbsp;UPLOAD_ERR_INI_SIZE)&nbsp;{</li><li class="line number17 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">exit</span>(&#039;Sorry,&nbsp;your&nbsp;file&nbsp;is&nbsp;too&nbsp;large&#039;);</li><li class="line number18 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li><li class="line number19 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!<span style="color: #ff1493;">exif_imagetype</span>(<span style="color: #aa7700;">$file</span>[&#039;tmp_name&#039;]))&nbsp;{</li><li class="line number20 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">exit</span>(&#039;File&nbsp;is&nbsp;not&nbsp;an&nbsp;image&#039;);</li><li class="line number21 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li><li class="line number22 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(<span style="color: #aa7700;">$file</span>[&#039;error&#039;]&nbsp;==&nbsp;UPLOAD_ERR_OK)&nbsp;{</li><li class="line number23 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #aa7700;">$fh</span>&nbsp;&nbsp;&nbsp;=&nbsp;<span style="color: #ff1493;">fopen</span>(<span style="color: #aa7700;">$file</span>[&#039;tmp_name&#039;],&nbsp;&#039;r&#039;);</li><li class="line number24 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #aa7700;">$read</span>&nbsp;=&nbsp;<span style="color: #ff1493;">fread</span>(<span style="color: #aa7700;">$fh</span>,&nbsp;<span style="color: #aa7700;">$file</span>[&#039;size&#039;]);</li><li class="line number25 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">fclose</span>(<span style="color: #aa7700;">$fh</span>);</li><li class="line number26 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #aa7700;">$post</span>&nbsp;=&nbsp;<span style="color: #ff1493;">array</span>(</li><li class="line number27 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;image&#039;&nbsp;=&gt;&nbsp;<span style="color: #ff1493;">base64_encode</span>(<span style="color: #aa7700;">$read</span>)</li><li class="line number28 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</li><li class="line number29 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #aa7700;">$ch</span>&nbsp;&nbsp;&nbsp;=&nbsp;<span style="color: #ff1493;">curl_init</span>();</li><li class="line number30 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">curl_setopt</span>(<span style="color: #aa7700;">$ch</span>,&nbsp;CURLOPT_URL,&nbsp;<span style="color: #aa7700;">$url</span>);</li><li class="line number31 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">curl_setopt</span>(<span style="color: #aa7700;">$ch</span>,&nbsp;CURLOPT_TIMEOUT,&nbsp;30);</li><li class="line number32 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">curl_setopt</span>(<span style="color: #aa7700;">$ch</span>,&nbsp;CURLOPT_POST,&nbsp;true);</li><li class="line number33 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">curl_setopt</span>(<span style="color: #aa7700;">$ch</span>,&nbsp;CURLOPT_POSTFIELDS,&nbsp;<span style="color: #aa7700;">$post</span>);</li><li class="line number34 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">curl_setopt</span>(<span style="color: #aa7700;">$ch</span>,&nbsp;CURLOPT_HTTPHEADER,&nbsp;<span style="color: #ff1493;">array</span>(</li><li class="line number35 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#039;Authorization:&nbsp;Client-ID&nbsp;&#039;.<span style="color: #aa7700;">$client_id</span></li><li class="line number36 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;));</li><li class="line number37 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">curl_setopt</span>(<span style="color: #aa7700;">$ch</span>,&nbsp;CURLOPT_SSL_VERIFYPEER,&nbsp;false);</li><li class="line number38 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">curl_setopt</span>(<span style="color: #aa7700;">$ch</span>,&nbsp;CURLOPT_RETURNTRANSFER,&nbsp;true);</li><li class="line number39 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #aa7700;">$json</span>&nbsp;=&nbsp;<span style="color: #ff1493;">curl_exec</span>(<span style="color: #aa7700;">$ch</span>);&nbsp;//&nbsp;Response,&nbsp;info:&nbsp;https://api.imgur.com/#responses</li><li class="line number40 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff1493;">curl_close</span>(<span style="color: #aa7700;">$ch</span>);</li><li class="line number41 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;<span style="color: #aa7700;">$image</span>&nbsp;=&nbsp;<span style="color: #ff1493;">json_decode</span>(<span style="color: #aa7700;">$json</span>,&nbsp;true);&nbsp;//&nbsp;Array</li><li class="line number42 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #aa7700;">$image</span>&nbsp;=&nbsp;<span style="color: #ff1493;">json_decode</span>(<span style="color: #aa7700;">$json</span>);&nbsp;//&nbsp;Object</li><li class="line number43 alt1"></li><li class="line number44 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;<span style="color: #ff1493;">var_dump</span>(<span style="color: #aa7700;">$image</span>);</li><li class="line number45 alt1"></li><li class="line number46 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;<span style="color: #aa7700;">$original</span>&nbsp;=&nbsp;<span style="color: #aa7700;">$image</span>[&#039;data&#039;][&#039;link&#039;];&nbsp;//&nbsp;Array-style</li><li class="line number47 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #aa7700;">$original</span>&nbsp;=&nbsp;<span style="color: #aa7700;">$image</span>-&gt;data-&gt;link;&nbsp;//&nbsp;Object-style</li><li class="line number48 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #aa7700;">$thumb</span>&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;<span style="color: #ff1493;">substr_replace</span>(<span style="color: #aa7700;">$original</span>,&nbsp;&#039;t&#039;,&nbsp;-4,&nbsp;0);&nbsp;//&nbsp;t&nbsp;=&nbsp;Small&nbsp;Thumbnail,&nbsp;info:&nbsp;https://api.imgur.com/models/image</li><li class="line number49 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&#039;&lt;<span style="color: #006699;">img&nbsp;src=&quot;&#039;.<span style="color: #aa7700;">$thumb</span>.&#039;&quot;&nbsp;alt=&quot;&#039;.<span style="color: #aa7700;">$image</span>-</span>&gt;data-&gt;id.&#039;&quot;&nbsp;/&gt;&lt;<span style="color: #006699;">br&nbsp;</span>/&gt;&lt;<span style="color: #006699;">a&nbsp;href=&quot;&#039;.<span style="color: #aa7700;">$original</span>.&#039;&quot;</span>&gt;&#039;.<span style="color: #aa7700;">$original</span>.&#039;&lt;/<span style="color: #006699;">a</span>&gt;&#039;;&nbsp;//&nbsp;Example</li><li class="line number50 alt2"></li><li class="line number51 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;...</li><li class="line number52 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li><li class="line number53 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;{</li><li class="line number54 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&#039;Upload&nbsp;was&nbsp;failed.&nbsp;Error&nbsp;code:&nbsp;&#039;.<span style="color: #aa7700;">$file</span>[&#039;error&#039;];</li><li class="line number55 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li><li class="line number56 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</li><li class="line number57 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;</li><li class="line number58 alt2">&nbsp;&nbsp;&nbsp;&nbsp;default:</li><li class="line number59 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;&#039;&lt;<span style="color: #006699;">!DOCTYPE&nbsp;html</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number60 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&lt;<span style="color: #006699;">html</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number61 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">head</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number62 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">title</span>&gt;imgur&nbsp;Uploader&lt;/<span style="color: #006699;">title</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number63 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/<span style="color: #006699;">head</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number64 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">body</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number65 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">div</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number66 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">h2</span>&gt;imgur&nbsp;Uploader&nbsp;(v3.0.1)&lt;/<span style="color: #006699;">h2</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number67 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">p</span>&gt;Upload&nbsp;an&nbsp;image&nbsp;to&nbsp;imgur.com.&lt;/<span style="color: #006699;">p</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number68 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/<span style="color: #006699;">div</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number69 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;form&nbsp;action=&quot;&#039;.<span style="color: #ff1493;">basename</span>(<span style="color: #aa7700;">$_SERVER</span>[&#039;SCRIPT_NAME&#039;]).&#039;?upload&quot;&nbsp;method=&quot;post&quot;&nbsp;enctype=&quot;multipart/form-data&quot;&gt;&#039;.&quot;\n&quot;</li><li class="line number70 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">div</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number71 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">label&nbsp;for=&quot;file&quot;</span>&gt;Select&nbsp;an&nbsp;image&nbsp;file&nbsp;to&nbsp;upload:&lt;/<span style="color: #006699;">label</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number72 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">input&nbsp;type=&quot;file&quot;&nbsp;name=&quot;file&quot;</span>&gt;&lt;<span style="color: #006699;">br&nbsp;</span>/&gt;&#039;.&quot;\n&quot;</li><li class="line number73 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">input&nbsp;type=&quot;submit&quot;&nbsp;value=&quot;Upload&quot;</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number74 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/<span style="color: #006699;">div</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number75 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/<span style="color: #006699;">form</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number76 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">div</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number77 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #006699;">p</span>&gt;&amp;copy;&nbsp;20161209&nbsp;&lt;a&nbsp;href=&quot;http://anggit.com&quot;&gt;nggit&lt;/<span style="color: #006699;">a</span>&gt;&lt;/<span style="color: #006699;">p</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number78 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/<span style="color: #006699;">div</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number79 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/<span style="color: #006699;">body</span>&gt;&#039;.&quot;\n&quot;</li><li class="line number80 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&#039;&lt;/<span style="color: #006699;">html</span>&gt;&#039;;</li><li class="line number81 alt1">}</li><li class="line number82 alt2"></li></ol><p><br />Mohon ganti <b>client_id</b> dengan punya Anda sendiri! Terimakasih <img src="/smilies/happy.gif" alt=":)" /><br />Semoga bermanfaat <img src="/smilies/happy.gif" alt=":)" /><br /><br />(admin.anggit.com)(linux) Solusi Modem Manager GUI Selalu Tanya Password/blog/post/396/linux-solusi-modem-manager-gui-selalu-tanya-password.htmlThu, 08 Dec 2016 19:49:50 +0700/blog/post/396/linux-solusi-modem-manager-gui-selalu-tanya-password.htmlModem Manager GUI adalah aplikasi untuk USB Modem seperti ZTE Join Air / Mobile Partner di linux. Jika Anda menggunakan aplikasi ini mungkin Anda akan kesal seperti saya karena aplikasi ini selalu tanya password berkali-kali. Bagaimana solusinya?<br /><br />Buatlah file <b>/etc/polkit-1/localauthority/50-local.d/users_modem_manager_policy.pkla</b> isi dengan 3 &quot;action id&quot; berikut ini:<br /><b>users_modem_manager_policy.pkla</b> [<a id="code-11" href="/1/rss.xml?code_textarea=1#code-11">Textarea</a>][<a href="/1/rss.xml?code_raw=11">RAW</a>][<a href="/1/rss.xml?code_download=11">Download</a>]</p><ol class="code"><li class="line number1 alt1">[Unlock&nbsp;and&nbsp;control&nbsp;a&nbsp;mobile&nbsp;broadband&nbsp;device]</li><li class="line number2 alt2">Identity=unix-user:username;</li><li class="line number3 alt1">Action=org.freedesktop.ModemManager1.Device.Control</li><li class="line number4 alt2">ResultInactive=no</li><li class="line number5 alt1">ResultActive=yes</li><li class="line number6 alt2"></li><li class="line number7 alt1">[Send,&nbsp;save,&nbsp;modify,&nbsp;and&nbsp;delete&nbsp;text&nbsp;messages]</li><li class="line number8 alt2">Identity=unix-user:username;</li><li class="line number9 alt1">Action=org.freedesktop.ModemManager1.Messaging</li><li class="line number10 alt2">ResultInactive=no</li><li class="line number11 alt1">ResultActive=yes</li><li class="line number12 alt2"></li><li class="line number13 alt1">[Enable&nbsp;and&nbsp;view&nbsp;geographic&nbsp;location&nbsp;and&nbsp;positioning&nbsp;information]</li><li class="line number14 alt2">Identity=unix-user:username;</li><li class="line number15 alt1">Action=org.freedesktop.ModemManager1.Location</li><li class="line number16 alt2">ResultInactive=no</li><li class="line number17 alt1">ResultActive=yes</li><li class="line number18 alt2"></li></ol><p><br />* Ganti username dengan username Anda<br />* Sebagai referensi &quot;action id&quot;, bisa dilihat di file <b>/usr/share/polkit-1/actions/org.freedesktop.ModemManager1.policy</b><br /><br />Selesai! Sekarang Modem Manager GUI tidak akan tanya password berkali-kali <img src="/smilies/happy.gif" alt=":)" /><br />Tested di Debian 8 &quot;Jessie&quot;.<br /><br />(admin)Split (Memecah) dan Tagging Otomatis File Audio FLAC di Linux/blog/post/395/split-memecah-dan-tagging-otomatis-file-audio-flac-di-linux.htmlThu, 01 Dec 2016 07:13:25 +0700/blog/post/395/split-memecah-dan-tagging-otomatis-file-audio-flac-di-linux.htmlPernahkah Anda mendapatkan beberapa track audio dalam satu file FLAC utuh? Mengapa demikian?<br /><br />Pada saat ripping kemungkinan tidak dilakukan opsi untuk sekaligus memisahkan track.<br /><br />Bagaimana memisahkannya? Caranya sangat mudah dan otomatis asal file FLAC tersebut disertai dengan <a href="http://https://en.wikipedia.org/wiki/Cue_sheet_(computing)">CUE sheet</a> / file CUE (data track).<br /><br />Untuk pengguna Debian / Ubuntu, install shntool, cuetools dan flac:<br />[<a id="code-12" href="/1/rss.xml?code_textarea=1#code-12">Textarea</a>][<a href="/1/rss.xml?code_raw=12">RAW</a>][<a href="/1/rss.xml?code_download=12">Download</a>]</p><ol class="code"><li class="line number1 alt1">#&nbsp;apt-get&nbsp;install&nbsp;shntool&nbsp;cuetools&nbsp;flac</li></ol><p><br />Untuk memudahkan, rename file FLAC menjadi <b>file.flac</b> dan file CUE menjadi <b>file.cue</b> lalu jalankan shnsplit:<br />[<a id="code-13" href="/1/rss.xml?code_textarea=1#code-13">Textarea</a>][<a href="/1/rss.xml?code_raw=13">RAW</a>][<a href="/1/rss.xml?code_download=13">Download</a>]</p><ol class="code"><li class="line number1 alt1">$&nbsp;shnsplit&nbsp;-f&nbsp;file.cue&nbsp;-t&nbsp;&quot;%n&nbsp;-&nbsp;%t&quot;&nbsp;-o&nbsp;flac&nbsp;file.flac</li></ol><p><br />Setelah proses selesai, jalankan perintah berikut ini untuk tagging otomatis:<br />[<a id="code-14" href="/1/rss.xml?code_textarea=1#code-14">Textarea</a>][<a href="/1/rss.xml?code_raw=14">RAW</a>][<a href="/1/rss.xml?code_download=14">Download</a>]</p><ol class="code"><li class="line number1 alt1">$&nbsp;cuetag&nbsp;file.cue&nbsp;[0-9]*.flac</li></ol><p><br />Done! <img src="/smilies/happy.gif" alt=":)" /><br /><br /><b>NB:</b><br />* Untuk pengguna Windows gunakan software semacam <a href="http://https://www.google.co.id/search?q=Medieval+CUE+Splitter">Medieval CUE Splitter</a><br />* Jika tidak menginginkan split file, bisa menggunakan media player dengan support CUE sheet seperti foobar2000, dll untuk memudahkan navigasi track (belum pernah mencoba)<br /><br />(admin.anggit.com)linux cek network interface/blog/post/394/linux-cek-network-interface.htmlThu, 27 Oct 2016 19:37:56 +0700/blog/post/394/linux-cek-network-interface.htmlBagaimana cara cek network interface?<br /><br />Perintah yang legendaris / jadul namun masih bisa digunakan sampai sekarang adalah:<br />[<a id="code-15" href="/1/rss.xml?code_textarea=1#code-15">Textarea</a>][<a href="/1/rss.xml?code_raw=15">RAW</a>][<a href="/1/rss.xml?code_download=15">Download</a>]</p><ol class="code"><li class="line number1 alt1">ifconfig</li></ol><p><br />Binary ifconfig terletak di <b>/sbin</b> sehingga untuk menjalankan perintah ini saat tidak login sebagai root adalah dengan cara mengetik full path yaitu <b>/sbin/ifconfig</b>. Atau dengan sudo:<br />[<a id="code-16" href="/1/rss.xml?code_textarea=1#code-16">Textarea</a>][<a href="/1/rss.xml?code_raw=16">RAW</a>][<a href="/1/rss.xml?code_download=16">Download</a>]</p><ol class="code"><li class="line number1 alt1">sudo&nbsp;ifconfig</li></ol><p><br />Hasil:<br />[<a id="code-17" href="/1/rss.xml?code_textarea=1#code-17">Textarea</a>][<a href="/1/rss.xml?code_raw=17">RAW</a>][<a href="/1/rss.xml?code_download=17">Download</a>]</p><ol class="code"><li class="line number1 alt1">eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link&nbsp;encap:Ethernet&nbsp;&nbsp;HWaddr&nbsp;00:26:22:8a:4db&nbsp;&nbsp;</li><li class="line number2 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP&nbsp;BROADCAST&nbsp;MULTICAST&nbsp;&nbsp;MTU:1500&nbsp;&nbsp;Metric:1</li><li class="line number3 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX&nbsp;packets:0&nbsp;errors:0&nbsp;dropped:0&nbsp;overruns:0&nbsp;frame:0</li><li class="line number4 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX&nbsp;packets:0&nbsp;errors:0&nbsp;dropped:0&nbsp;overruns:0&nbsp;carrier:0</li><li class="line number5 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collisions:0&nbsp;txqueuelen:1000&nbsp;</li><li class="line number6 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX&nbsp;bytes:0&nbsp;(0.0&nbsp;B)&nbsp;&nbsp;TX&nbsp;bytes:0&nbsp;(0.0&nbsp;B)</li><li class="line number7 alt1"></li><li class="line number8 alt2">lo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link&nbsp;encap:Local&nbsp;Loopback&nbsp;&nbsp;</li><li class="line number9 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet&nbsp;addr:127.0.0.1&nbsp;&nbsp;Mask:255.0.0.0</li><li class="line number10 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet6&nbsp;addr:&nbsp;::1/128&nbsp;Scope:Host</li><li class="line number11 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP&nbsp;LOOPBACK&nbsp;RUNNING&nbsp;&nbsp;MTU:65536&nbsp;&nbsp;Metric:1</li><li class="line number12 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX&nbsp;packets:89&nbsp;errors:0&nbsp;dropped:0&nbsp;overruns:0&nbsp;frame:0</li><li class="line number13 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX&nbsp;packets:89&nbsp;errors:0&nbsp;dropped:0&nbsp;overruns:0&nbsp;carrier:0</li><li class="line number14 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collisions:0&nbsp;txqueuelen:0&nbsp;</li><li class="line number15 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX&nbsp;bytes:25892&nbsp;(25.2&nbsp;KiB)&nbsp;&nbsp;TX&nbsp;bytes:25892&nbsp;(25.2&nbsp;KiB)</li><li class="line number16 alt2"></li><li class="line number17 alt1">ppp0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link&nbsp;encapoint-to-Point&nbsp;Protocol&nbsp;&nbsp;</li><li class="line number18 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet&nbsp;addr:10.25.250.147&nbsp;&nbsp;P-t-P:10.64.64.64&nbsp;&nbsp;Mask:255.255.255.255</li><li class="line number19 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP&nbsp;POINTOPOINT&nbsp;RUNNING&nbsp;NOARP&nbsp;MULTICAST&nbsp;&nbsp;MTU:1500&nbsp;&nbsp;Metric:1</li><li class="line number20 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX&nbsp;packets:7563&nbsp;errors:0&nbsp;dropped:0&nbsp;overruns:0&nbsp;frame:0</li><li class="line number21 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX&nbsp;packets:8883&nbsp;errors:0&nbsp;dropped:0&nbsp;overruns:0&nbsp;carrier:0</li><li class="line number22 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collisions:0&nbsp;txqueuelen:3&nbsp;</li><li class="line number23 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX&nbsp;bytes:4615282&nbsp;(4.4&nbsp;MiB)&nbsp;&nbsp;TX&nbsp;bytes:1175089&nbsp;(1.1&nbsp;MiB)</li><li class="line number24 alt2"></li><li class="line number25 alt1">wlan0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Link&nbsp;encap:Ethernet&nbsp;&nbsp;HWaddr&nbsp;84:4b:f5:87:1f:f3&nbsp;&nbsp;</li><li class="line number26 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UP&nbsp;BROADCAST&nbsp;MULTICAST&nbsp;&nbsp;MTU:1500&nbsp;&nbsp;Metric:1</li><li class="line number27 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX&nbsp;packets:0&nbsp;errors:0&nbsp;dropped:0&nbsp;overruns:0&nbsp;frame:0</li><li class="line number28 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TX&nbsp;packets:0&nbsp;errors:0&nbsp;dropped:0&nbsp;overruns:0&nbsp;carrier:0</li><li class="line number29 alt1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collisions:0&nbsp;txqueuelen:1000&nbsp;</li><li class="line number30 alt2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RX&nbsp;bytes:0&nbsp;(0.0&nbsp;B)&nbsp;&nbsp;TX&nbsp;bytes:0&nbsp;(0.0&nbsp;B)</li></ol><p><br />Perintah baru yang direkomendasikan adalah:<br />[<a id="code-18" href="/1/rss.xml?code_textarea=1#code-18">Textarea</a>][<a href="/1/rss.xml?code_raw=18">RAW</a>][<a href="/1/rss.xml?code_download=18">Download</a>]</p><ol class="code"><li class="line number1 alt1">ip&nbsp;link&nbsp;show</li></ol><p><br />Perintah ip bisa dijalankan sebagai root maupun tidak.<br /><br />Hasil:<br />[<a id="code-19" href="/1/rss.xml?code_textarea=1#code-19">Textarea</a>][<a href="/1/rss.xml?code_raw=19">RAW</a>][<a href="/1/rss.xml?code_download=19">Download</a>]</p><ol class="code"><li class="line number1 alt1">1:&nbsp;lo:&nbsp;&lt;<span style="color: #006699;">LOOPBACK,UP,LOWER_UP</span>&gt;&nbsp;mtu&nbsp;65536&nbsp;qdisc&nbsp;noqueue&nbsp;state&nbsp;UNKNOWN&nbsp;mode&nbsp;DEFAULT&nbsp;group&nbsp;default&nbsp;</li><li class="line number2 alt2">&nbsp;&nbsp;&nbsp;&nbsp;link/loopback&nbsp;00:00:00:00:00:00&nbsp;brd&nbsp;00:00:00:00:00:00</li><li class="line number3 alt1">2:&nbsp;eth0:&nbsp;&lt;<span style="color: #006699;">NO-CARRIER,BROADCAST,MULTICAST,UP</span>&gt;&nbsp;mtu&nbsp;1500&nbsp;qdisc&nbsp;pfifo_fast&nbsp;state&nbsp;DOWN&nbsp;mode&nbsp;DEFAULT&nbsp;group&nbsp;default&nbsp;qlen&nbsp;1000</li><li class="line number4 alt2">&nbsp;&nbsp;&nbsp;&nbsp;link/ether&nbsp;00:26:22:8a:4db&nbsp;brd&nbsp;ff:ff:ff:ff:ff:ff</li><li class="line number5 alt1">3:&nbsp;wlan0:&nbsp;&lt;<span style="color: #006699;">NO-CARRIER,BROADCAST,MULTICAST,UP</span>&gt;&nbsp;mtu&nbsp;1500&nbsp;qdisc&nbsp;mq&nbsp;state&nbsp;DOWN&nbsp;mode&nbsp;DORMANT&nbsp;group&nbsp;default&nbsp;qlen&nbsp;1000</li><li class="line number6 alt2">&nbsp;&nbsp;&nbsp;&nbsp;link/ether&nbsp;84:4b:f5:87:1f:f3&nbsp;brd&nbsp;ff:ff:ff:ff:ff:ff</li><li class="line number7 alt1">5:&nbsp;ppp0:&nbsp;&lt;<span style="color: #006699;">POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP</span>&gt;&nbsp;mtu&nbsp;1500&nbsp;qdisc&nbsp;pfifo_fast&nbsp;state&nbsp;UNKNOWN&nbsp;mode&nbsp;DEFAULT&nbsp;group&nbsp;default&nbsp;qlen&nbsp;3</li><li class="line number8 alt2">&nbsp;&nbsp;&nbsp;&nbsp;link/ppp&nbsp;</li></ol><p><br />(admin)linux reset nomor network interface/blog/post/393/linux-reset-nomor-network-interface.htmlThu, 27 Oct 2016 17:26:02 +0700/blog/post/393/linux-reset-nomor-network-interface.htmlKetika saya mengganti wireless adapter baru pada sebuah laptop, nomor interface secara otomatis bertambah. Adapter yang terpasang pertama kali adalah <b>wlan0</b>, yang baru ini adalah <b>wlan3</b> karena <b>wlan2</b> adalah adapter usb yang terpasang sebelumnya. Bagaimana cara me-reset nomor network interface tersebut? Karena saya ingin adapter yang terpasang di laptop sekarang adalah sebagai interface <b>wlan0</b> <img src="/smilies/happy.gif" alt=":)" /><br /><br />Caranya cukup simple yaitu dengan menghapus file <b>/etc/udev/rules.d/70-persistent-net.rules</b>. Tenang, file tersebut <i>auto-generated</i> <img src="/smilies/happy.gif" alt=":)" /> <br /><br />Atau dengan cara mengosongkan isi file tersebut:<br />[<a id="code-20" href="/1/rss.xml?code_textarea=1#code-20">Textarea</a>][<a href="/1/rss.xml?code_raw=20">RAW</a>][<a href="/1/rss.xml?code_download=20">Download</a>]</p><ol class="code"><li class="line number1 alt1">root@hostname:~#&nbsp;&gt;&nbsp;/etc/udev/rules.d/*net.rules</li></ol><p><br />Perubahan terjadi setelah boot berikutnya. <a href="http://admin.anggit.com/blog/post/394/linux-cek-network-interface.html">Cek network interface</a>.<br /><br />(admin)Install Driver USB TP-LINK TL-WN7200ND di Debian / Linux/blog/post/387/install-driver-usb-tp-link-tl-wn7200nd-di-debian-linux.htmlSat, 27 Aug 2016 08:43:46 +0700/blog/post/387/install-driver-usb-tp-link-tl-wn7200nd-di-debian-linux.htmlPada website resminya (<a href="http://www.tp-link.co.id/products/details/TL-WN7200ND.html">http://www.tp-link.co.id/products/details/TL-WN7200ND.html</a>), TP-LINK tidak menyediakan download link driver/modul TL-WN7200ND untuk platform berbasis Linux. Namun sebenarnya tidak masalah jika kita mengetahui chipset yang digunakan, kita bisa mendownload dari website resmi vendor chipset atau sumber lain yang menyediakan. Dalam kasus ini <b>TL-WN700ND</b> menggunakan chipset Ralink RT2870 dan ternyata pada Debian 8 / Jessie sudah tersedia di repositori &quot;non-free&quot;. Cukup install &quot;firmware-ralink&quot; melalui Synaptic Package Manager atau melalui APT:<br />[<a id="code-21" href="/1/rss.xml?code_textarea=1#code-21">Textarea</a>][<a href="/1/rss.xml?code_raw=21">RAW</a>][<a href="/1/rss.xml?code_download=21">Download</a>]</p><ol class="code"><li class="line number1 alt1">apt-get&nbsp;update&nbsp;&amp;&amp;&nbsp;apt-get&nbsp;install&nbsp;firmware-ralink</li></ol><p>Ingat! firmware-ralink tersedia di repositori &quot;non-free&quot;. Anda harus menambahkannya di <b>/etc/apt/sources.list</b>. Contoh:<br />[<a id="code-22" href="/1/rss.xml?code_textarea=1#code-22">Textarea</a>][<a href="/1/rss.xml?code_raw=22">RAW</a>][<a href="/1/rss.xml?code_download=22">Download</a>]</p><ol class="code"><li class="line number1 alt1">#&nbsp;Debian&nbsp;8&nbsp;&quot;Jessie&quot;</li><li class="line number2 alt2">deb&nbsp;http://http.debian.net/debian/&nbsp;jessie&nbsp;main&nbsp;contrib&nbsp;non-free</li></ol><p><br />Untuk download firmware-ralink secara manual, atau tidak melalui Synaptic atau APT:<br /><a href="http://http.us.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-ralink_0.43_all.deb">ralink_0.43_all.deb</a> (Sumber: <a href="http://https://packages.debian.org/jessie/firmware-ralink">https://packages.debian.org/jessie/firmware-ralink</a>)<br /><br />Referensi: <a href="http://https://wiki.debian.org/rt2800usb">https://wiki.debian.org/rt2800usb</a><br />(admin)linux find and replace menggunakan regex (sed)/blog/post/386/linux-find-and-replace-menggunakan-regex-sed.htmlSat, 27 Aug 2016 08:16:34 +0700/blog/post/386/linux-find-and-replace-menggunakan-regex-sed.htmlKetika saya ingin menghapus semua package (sebut saja paket) yang telah ter-download misal di <b>var/cache/apt/archives</b> beserta dependency-nya sekaligus, saya ingin membuat skrip / otomatisasi nya berdasarkan langkah-langkah berikut:<br /><br />1. Cari semua file ekstensi .deb<br />2. Ambil hanya nama paket nya. Misal file <b>python3-gi-cairo_3.14.0-1_i386.deb</b> nama paketnya adalah <b>python3-gi-cairo</b>. Diketahui bahwa nama paket file .deb (dari repositori resmi) adalah sebelum karakter _ (underscore) pertama.<br />3. Hapus menggunakan apt-get purge<br /><br />Untuk saat ini saya belum menemukan cara yang paling cepat dan simple. Setelah browsing, saya menemukan command yang bisa mengakomodasi find and replace menggunakan regular-expression (regex) yaitu <b>sed</b>. kebetulan sed sudah built-in dan tidak perlu mengistall paket sed di linux.<br />Cara yang saya gunakan menurut saya belum sempurna namun setidaknya bisa berfungsi dengan baik <img src="/smilies/veryhappy.gif" alt=":D" /><br />Berikut cara yang saya gunakan:<br /><br />1. Cari semua file ekstensi .deb<br />[<a id="code-23" href="/1/rss.xml?code_textarea=1#code-23">Textarea</a>][<a href="/1/rss.xml?code_raw=23">RAW</a>][<a href="/1/rss.xml?code_download=23">Download</a>]</p><ol class="code"><li class="line number1 alt1">find&nbsp;.&nbsp;-type&nbsp;f&nbsp;-name&nbsp;&#039;*.deb&#039;&nbsp;&gt;&nbsp;/tmp/paket.log</li></ol><p><br />Keterangan:<br />Tentunya bisa anda ubah tanda &quot;.&quot; sesuai direktori anda.<br />Tanda &gt; untuk menyimpan hasil pencarian ke temporary paket.log, jika sudah ada file paket.log akan di-rewrite. kalau menggunakan tanda &gt;&gt; akan di-append atau ditambahkan setelah baris terakhir.<br /><br />Contoh hasil pencarian yang tersimpan di paket.log:<br />[<a id="code-24" href="/1/rss.xml?code_textarea=1#code-24">Textarea</a>][<a href="/1/rss.xml?code_raw=24">RAW</a>][<a href="/1/rss.xml?code_download=24">Download</a>]</p><ol class="code"><li class="line number1 alt1">./Downloads/catfish/python3-gi-cairo_3.14.0-1_i386.deb</li><li class="line number2 alt2">./Downloads/catfish/python3-pexpect_3.2-1_all.deb</li><li class="line number3 alt1">./Downloads/catfish/catfish_1.2.2-1_all.deb</li><li class="line number4 alt2">./Downloads/ppp/libwvstreams4.6-base_4.6.1-7_i386.deb</li><li class="line number5 alt1">./Downloads/ppp/wvdial_1.61-4.1_i386.deb</li><li class="line number6 alt2">./Downloads/ppp/libwvstreams4.6-extras_4.6.1-7_i386.deb</li><li class="line number7 alt1">./Downloads/ppp/libuniconf4.6_4.6.1-7_i386.deb</li><li class="line number8 alt2">./Downloads/sk1/blt_2.5.3+dfsg-1_i386.deb</li><li class="line number9 alt1">./Downloads/sk1/python-tk_2.7.8-2+b1_i386.deb</li><li class="line number10 alt2">./Downloads/sk1/python-sk1-0.9.3_1debian_7.8_i386.deb</li><li class="line number11 alt1">./Downloads/sk1/tk8.6-blt2.5_2.5.3+dfsg-1_i386.deb</li><li class="line number12 alt2">./Downloads/build-essential/libalgorithm-diff-perl_1.19.02-3_all.deb</li><li class="line number13 alt1">./Downloads/build-essential/g++_4%3a4.9.2-2_i386.deb</li><li class="line number14 alt2">./Downloads/build-essential/build-essential_11.7_i386.deb</li><li class="line number15 alt1">./Downloads/build-essential/libstdc++-4.9-dev_4.9.2-10_i386.deb</li><li class="line number16 alt2">./Downloads/build-essential/dpkg-dev_1.17.27_all.deb</li><li class="line number17 alt1">./Downloads/build-essential/libalgorithm-merge-perl_0.08-2_all.deb</li><li class="line number18 alt2">./Downloads/build-essential/libalgorithm-diff-xs-perl_0.04-3+b1_i386.deb</li><li class="line number19 alt1">./Downloads/build-essential/g++-4.9_4.9.2-10_i386.deb</li></ol><p><br />2. Ambil hanya nama paket nya.<br />Misal pada baris pertama ./Downloads/catfish/python3-gi-cairo_3.14.0-1_i386.deb kita ambil teks <b>python3-gi-cairo</b> yaitu antara / (slash) dan _ (underscore).<br />Cara ini memanfaatkan regex pada command sed.<br />[<a id="code-25" href="/1/rss.xml?code_textarea=1#code-25">Textarea</a>][<a href="/1/rss.xml?code_raw=25">RAW</a>][<a href="/1/rss.xml?code_download=25">Download</a>]</p><ol class="code"><li class="line number1 alt1">sed&nbsp;-r&nbsp;&#039;s/.+\/([^\/_]+)_.+\.deb/\1/g&#039;&nbsp;/tmp/paket.log</li></ol><p><br />Keterangan: opsi <b>-r</b> untuk mengaktifkan regex extended yaitu agar bisa menggunakan ?, +, dan grouping.<br /><br />Hasilnya adalah:<br />[<a id="code-26" href="/1/rss.xml?code_textarea=1#code-26">Textarea</a>][<a href="/1/rss.xml?code_raw=26">RAW</a>][<a href="/1/rss.xml?code_download=26">Download</a>]</p><ol class="code"><li class="line number1 alt1">user@hostname:~$&nbsp;sed&nbsp;-r&nbsp;&#039;s/.+\/([^\/_]+)_.+\.deb/\1/g&#039;&nbsp;/tmp/paket.log</li><li class="line number2 alt2">python3-gi-cairo</li><li class="line number3 alt1">python3-pexpect</li><li class="line number4 alt2">catfish</li><li class="line number5 alt1">libwvstreams4.6-base</li><li class="line number6 alt2">wvdial</li><li class="line number7 alt1">libwvstreams4.6-extras</li><li class="line number8 alt2">libuniconf4.6</li><li class="line number9 alt1">blt</li><li class="line number10 alt2">python-tk</li><li class="line number11 alt1">python-sk1-0.9.3</li><li class="line number12 alt2">tk8.6-blt2.5</li><li class="line number13 alt1">libalgorithm-diff-perl</li><li class="line number14 alt2">g++</li><li class="line number15 alt1">build-essential</li><li class="line number16 alt2">libstdc++-4.9-dev</li><li class="line number17 alt1">dpkg-dev</li><li class="line number18 alt2">libalgorithm-merge-perl</li><li class="line number19 alt1">libalgorithm-diff-xs-perl</li><li class="line number20 alt2">g++-4.9</li></ol><p><br />3. Hapus menggunakan apt-get purge.<br />apt-get dengan opsi <b>purge</b> menghapus bersih paket beserta config-nya dari system.<br />[<a id="code-27" href="/1/rss.xml?code_textarea=1#code-27">Textarea</a>][<a href="/1/rss.xml?code_raw=27">RAW</a>][<a href="/1/rss.xml?code_download=27">Download</a>]</p><ol class="code"><li class="line number1 alt1">apt-get&nbsp;purge&nbsp;$(sed&nbsp;-r&nbsp;&#039;s/.+\/([^\/_]+)_.+\.deb/\1/g&#039;&nbsp;/tmp/paket.log)</li></ol><p><br />Keterangan:<br />Perintah didalam perintah. <a href="http://askubuntu.com/questions/7404/can-i-run-a-command-within-another-command">http://askubuntu.com/questions/7404/can-i-run-a-command-within-another-command</a><br />Selain menggunakan apt-get bisa juga menggunakan dpkg, jika anda sudah terbiasa dengan dpkg. Dan yang pasti sesuaikan dengan distro masing-masing.<br /><br />Jadi semua perintah diatas jika disatukan bisa seperti ini:<br />[<a id="code-28" href="/1/rss.xml?code_textarea=1#code-28">Textarea</a>][<a href="/1/rss.xml?code_raw=28">RAW</a>][<a href="/1/rss.xml?code_download=28">Download</a>]</p><ol class="code"><li class="line number1 alt1">find&nbsp;.&nbsp;-name&nbsp;&#039;*.deb&#039;&nbsp;&gt;&nbsp;/tmp/paket.log&nbsp;&amp;&amp;&nbsp;apt-get&nbsp;purge&nbsp;$(sed&nbsp;-r&nbsp;&#039;s/.+\/([^\/_]+)_.+\.deb/\1/g&#039;&nbsp;/tmp/paket.log)</li></ol><p><br />Apakah anda punya cara yang lebih baik? silahkan berbagi di komentar <img src="/smilies/happy.gif" alt=":)" /><br />Terakhir dari saya. <b>Do it at your own risk</b>. Salam.<br /><br />(admin.anggit.com)Debian (linux) Sekarang Semakin Mudah/blog/post/385/debian-linux-sekarang-semakin-mudah.htmlFri, 26 Aug 2016 21:52:01 +0700/blog/post/385/debian-linux-sekarang-semakin-mudah.html<a href="http://i.imgur.com/QNuuxxH.png"><img src="http://i.imgur.com/QNuuxxHs.png" alt="img" height="90px" /></a><br />Dulu saat kali pertama menggunakan OS berbasis Linux, distribusi yang saya gunakan adalah Ubuntu 10.04 aka &quot;Lucid Lynx&quot;. Semua berjalan lancar dan saya ingin sekali beralih ke induk Ubuntu sendiri yaitu Debian. Dan memang terasa agak ribet menggunakannya.. hehe kalo nggak salah saat itu Debian 5 &quot;Lenny&quot;. Namun selang beberapa lama saya tidak menggunakannya karena bagi saya membuang waktu untuk config ini itu, karena saya hanya ingin OS yang sempurna untuk aktifitas seperti sekedar browsing atau programming <img src="/smilies/veryhappy.gif" alt=":D" /> Namun setelah sekian lama, saya ingin mencoba lagi untuk sekedar mengetahui <i>progress</i> si Debian. Luar biasa, Debian 8 &quot;jessie&quot; (bukan kopi jessica) semakin mudah saja proses instalasi nya.. Sepertinya sejak Debian 7. Support device nya juga semakin luas.. mungkin karena kernelnya yang juga sudah semakin diperbarui <img src="/smilies/happy.gif" alt=":)" /> Test WiFi langsung detect (Atheros 9285), printer Canon iP2770 juga langsung bisa buat ngeprint.. thanks to CUPS <img src="/smilies/happy.gif" alt=":)" /> yang terakhir.. USB Modem ZTE 190 juga begitu colok langsung bisa dikonek melalui &quot;nm-applet&quot; Network Manager atau istilah kerennya gambar sinyal di panel.. letaknya di sebelah kanan atas kalo punya saya karena menggunakan XFCE sebagai Desktop Environment-nya<br /><br />So? Apakah Anda juga menggunakan Debian atau distro yang lain? Mari berbagi di komentar <img src="/smilies/happy.gif" alt=":)" />Defacer "Tersakiti" setelah gagal mendeface situs ini/blog/post/382/defacer-tersakiti-setelah-gagal-mendeface-situs-ini.htmlWed, 25 May 2016 16:43:57 +0700/blog/post/382/defacer-tersakiti-setelah-gagal-mendeface-situs-ini.htmlSesuai dengan namanya.. <a href="http://mrxerward.anggit.com">Defacer Tersakiti Team</a>, sepertinya telah gagal melakukan deface terhadap situs ini dan pasti tersakiti karena waktu mereka terbuang untuk situs <i>lowprofile</i> ini hehehe. Namun saya berterima kasih karena berarti mereka telah menguji sekuritas situs saya meski bukan situs terkenal, situs pemerintah / lembaga <img src="/smilies/veryhappy.gif" alt=":D" /> <br /><br />Untuk mendeface situs ini dengan cara mengeksploitasi kelemahan coding sepertinya sangat sulit karena secara pribadi saya sangat <i>strict</i> dalam bercoding. Motto saya adalah Fast, Simple &amp; Robust <img src="/smilies/happy.gif" alt=":)" /><br /><br />Mungkin jika deface bisa dilakukan, adalah dengan mem brute-force login admin atau melalui celah cPanel (hosting) jika ada. Namun saya sebagai admin hanya akan mengapresiasi jika hacker benar-benar bisa menemukan kelemahan situs dari sisi coding / CMS, bukan melalui kelemahan hosting.Design Web dengan Bootstrap CSS/blog/post/373/design-web-dengan-bootstrap-css.htmlSat, 21 Nov 2015 07:10:04 +0700/blog/post/373/design-web-dengan-bootstrap-css.htmlBootstrap adalah CSS Framework yang dibuat oleh Twitter dan digunakan di banyak situs web sekarang ini.. Bahkan situs PHP.net juga menggunakan Twitter Bootstrap. Saya baru memakainya beberapa bulan untuk sistem blog saya yang baru namun belum final blognya jadi maaf tidak bisa saya tampilkan sekarang <img src="/smilies/happy.gif" alt=":)" /> Dari pengalaman saya, menggunakan CSS Bootstrap lebih mempermudah dan mempercepat saya dalam <i>theming</i> website karena sudah tersedia bermacam macam fungsi CSS. Cara kerjanya adalah dengan menaruh isi attribute id / class pada tag html, dengan id / class yang sudah disediakan Twitter Bootsrap. Seperti class <b>col-md-4</b> untuk membuat kolom lebar 1/3 karena jumlah grid kolom standar Bootstrap adalah 12. Bootstrap sangat cocok untuk orang yang malas berurusan dengan tampilan web seperti saya hehe <img src="/smilies/veryhappy.gif" alt=":D" /><br /><br />Banyak sekali situs yang menyediakan contoh template Bootstrap.. silahkan google aja ya. Untuk situs resminya di <a href="http://getbootstrap.com/css/">http://getbootstrap.com/css/</a><br /><br />Terima kasih, apakah situs kamu juga menggunakan CSS Bootstrap? <img src="/smilies/happy.gif" alt=":)" /> Kalo belum mari mulai berkreasi <img src="/smilies/happy.gif" alt=":)" />mysqli_connect dan mysqli_query/blog/post/372/mysqli-connect-dan-mysqli-query.htmlThu, 19 Nov 2015 08:23:39 +0700/blog/post/372/mysqli-connect-dan-mysqli-query.htmlIni adalah repost dari artikel yang hilang beberapa waktu yang lalu..<br /><br />Berhubung fungsi mysql sudah <i>deprecated</i> di PHP 5.5 dan dihapus di PHP 7.0.0, kita harus beralih ke mysqli atau PDO MySQL agar codingan kita <i>up to date</i>.<br /><br />Perbedaan antara mysql_connect dan mysqli_connect yaitu mysqli_connect tidak lagi menggunakan fungsi tersendiri untuk menentukan database yang digunakan seperti mysql_select_db pada mysql, melainkan cukup satu baris kode:<br />[<a id="code-29" href="/1/rss.xml?code_textarea=1#code-29">Textarea</a>][<a href="/1/rss.xml?code_raw=29">RAW</a>][<a href="/1/rss.xml?code_download=29">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #aa7700;">$db_connect</span>&nbsp;=&nbsp;<span style="color: #ff1493;">mysqli_connect</span>(&quot;host&quot;,&nbsp;&quot;user&quot;,&nbsp;&quot;password&quot;,&nbsp;&quot;database&quot;);</li></ol><p><br />Sedangkan untuk melakukan query, contoh:<br />[<a id="code-30" href="/1/rss.xml?code_textarea=1#code-30">Textarea</a>][<a href="/1/rss.xml?code_raw=30">RAW</a>][<a href="/1/rss.xml?code_download=30">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #ff1493;">mysqli_query</span>(<span style="color: #aa7700;">$db_connect</span>,&nbsp;&quot;SELECT&nbsp;1&nbsp;FROM&nbsp;database&quot;);</li></ol><p>[Pemprograman C] Pembagian di Bahasa C/blog/post/371/pemprograman-c-pembagian-di-bahasa-c.htmlThu, 19 Nov 2015 05:58:43 +0700/blog/post/371/pemprograman-c-pembagian-di-bahasa-c.htmlPembagian di Pemprograman C sangat memperhatikan tipe data pembilang maupun penyebut. Katakanlah <b>a</b> adalah pembilang dan <b>b</b> adalah penyebut maka jika <b>a tipe integer</b> dibagi <b>b tipe integer</b> hasilnya integer.. meskipun pembagian seharusnya akan menghasilkan float, hasil tersebut akan &#039;dipotong&#039; tanpa menggunakan bilangan di belakang koma atau seperti menggunakan fungsi floor(). Untuk lebih jelasnya perhatikan contoh berikut ini:<br /><br />[<a id="code-31" href="/1/rss.xml?code_textarea=1#code-31">Textarea</a>][<a href="/1/rss.xml?code_raw=31">RAW</a>][<a href="/1/rss.xml?code_download=31">Download</a>]</p><ol class="code"><li class="line number1 alt1">#include&nbsp;&lt;<span style="color: #006699;">stdio.h</span>&gt;</li><li class="line number2 alt2"></li><li class="line number3 alt1">int&nbsp;<span style="color: #ff1493;">main</span>()&nbsp;{</li><li class="line number4 alt2"> int&nbsp;a&nbsp;=&nbsp;7;&nbsp;//&nbsp;pembilang</li><li class="line number5 alt1"> int&nbsp;b&nbsp;=&nbsp;4;&nbsp;//&nbsp;penyebut</li><li class="line number6 alt2"></li><li class="line number7 alt1"> float&nbsp;c&nbsp;=&nbsp;a/b;</li><li class="line number8 alt2"> <span style="color: #ff1493;">printf</span>(&quot;%f&quot;,&nbsp;c);&nbsp;//&nbsp;Hasil:&nbsp;1.000000</li><li class="line number9 alt1"></li><li class="line number10 alt2"> return&nbsp;0;</li><li class="line number11 alt1">}</li></ol><p><br />Agar variabel c diatas menghasilkan hasil yang &#039;benar&#039; yaitu 1.75 maka bisa kita ubah kodenya seperti berikut ini:<br /><br />[<a id="code-32" href="/1/rss.xml?code_textarea=1#code-32">Textarea</a>][<a href="/1/rss.xml?code_raw=32">RAW</a>][<a href="/1/rss.xml?code_download=32">Download</a>]</p><ol class="code"><li class="line number1 alt1">#include&nbsp;&lt;<span style="color: #006699;">stdio.h</span>&gt;</li><li class="line number2 alt2"></li><li class="line number3 alt1">int&nbsp;<span style="color: #ff1493;">main</span>()&nbsp;{</li><li class="line number4 alt2"> float&nbsp;a&nbsp;=&nbsp;7;&nbsp;//&nbsp;pembilang</li><li class="line number5 alt1"> float&nbsp;b&nbsp;=&nbsp;4;&nbsp;//&nbsp;penyebut</li><li class="line number6 alt2"></li><li class="line number7 alt1"> float&nbsp;c&nbsp;=&nbsp;a/b;</li><li class="line number8 alt2"> <span style="color: #ff1493;">printf</span>(&quot;%f&quot;,&nbsp;c);&nbsp;//&nbsp;Hasil:&nbsp;1.750000</li><li class="line number9 alt1"></li><li class="line number10 alt2"> return&nbsp;0;</li><li class="line number11 alt1">}</li></ol><p><br />Catatan:<br />* Tipe data float bisa menyimpan bilangan desimal maka tidak harus menulis nilai variabel a dan b diatas menjadi bentuk float seperti 7.0 atau 4.0.<br />** Untuk menghasilkan float, diperlukan minimal pembilang saja atau penyebut saja yang bertipe float.[Pemprograman C] array multidimensional dengan tipe data campuran/blog/post/370/pemprograman-c-array-multidimensional-dengan-tipe-data-campuran.htmlThu, 29 Oct 2015 07:23:45 +0700/blog/post/370/pemprograman-c-array-multidimensional-dengan-tipe-data-campuran.htmlDidalam Pemprograman C, untuk melakukan sesuatu itu tidak semudah atau sesimpel seperti di PHP. Saya katakan demikian karena saya adalah orang yang belajar PHP dulu sebelum C. Saya baru mulai belajar C dengan cara membaca beberapa hal saja yang saya perlukan untuk langsung mengubah salah satu aplikasi PHP saya ke dalam bahasa C. Kendala yang saya alami pertama kali adalah di seputar pembuatan array, terutama array multidimensional. Berikut contoh array multidimensional dalam PHP:<br />[<a id="code-33" href="/1/rss.xml?code_textarea=1#code-33">Textarea</a>][<a href="/1/rss.xml?code_raw=33">RAW</a>][<a href="/1/rss.xml?code_download=33">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #aa7700;">$a</span>&nbsp;=&nbsp;<span style="color: #ff1493;">array</span>(&#039;Friday&#039;,&nbsp;<span style="color: #ff1493;">array</span>(1,&nbsp;2,&nbsp;3,&nbsp;4,&nbsp;5),&nbsp;&#039;Jumat&#039;);</li></ol><p><br />Nah bagaimana mengubahnya dalam Bahasa C? Apakah seperti ini?:<br />[<a id="code-34" href="/1/rss.xml?code_textarea=1#code-34">Textarea</a>][<a href="/1/rss.xml?code_raw=34">RAW</a>][<a href="/1/rss.xml?code_download=34">Download</a>]</p><ol class="code"><li class="line number1 alt1">a[]&nbsp;=&nbsp;{&quot;Friday&quot;,&nbsp;{1,&nbsp;2,&nbsp;3,&nbsp;4,&nbsp;5},&nbsp;&quot;Jumat&quot;};</li></ol><p>Salah! Tidak sesederhana itu! Kalau dengan model seperti itu juga saya bingung bagaimana menambahkan tipe data pada variable nya, mengingat didalamnya terdapat karakter dan juga integer.. untuk masalah ini saya menggunakan <a href="http://en.wikipedia.org/wiki/Union_type">Union</a> sebagai solusi tipe data campuran dalam satu variable.<br /><br />Didalam Pemprograman C, sejauh yang saya tahu, kita tidak bisa memasukkan nilai array berupa string dan array bersamaan. Solusi untuk hal ini adalah dengan memasukkan string ke array baru yang ukurannya sama dengan array terbesar. Sebagai contoh, kita ubah array pada contoh pertama menjadi:<br />[<a id="code-35" href="/1/rss.xml?code_textarea=1#code-35">Textarea</a>][<a href="/1/rss.xml?code_raw=35">RAW</a>][<a href="/1/rss.xml?code_download=35">Download</a>]</p><ol class="code"><li class="line number1 alt1">a[3][5]&nbsp;=&nbsp;{{&quot;Friday&quot;,&nbsp;NULL,&nbsp;NULL,&nbsp;NULL,&nbsp;NULL},</li><li class="line number2 alt2"> {1,&nbsp;2,&nbsp;3,&nbsp;4,&nbsp;5},</li><li class="line number3 alt1"> {&quot;Jumat&quot;,,&nbsp;NULL,&nbsp;NULL,&nbsp;NULL,&nbsp;NULL}};</li></ol><p><br />Seperti yang saya katakan sebelumnya, karena array tersebut menggunakan tipe data campuran yaitu char dan int, maka solusi yang saya dapatkan setelah tanya Mbah Google adalah menggunakan &quot;Union tagging&quot; seperti berikut:<br />[<a id="code-36" href="/1/rss.xml?code_textarea=1#code-36">Textarea</a>][<a href="/1/rss.xml?code_raw=36">RAW</a>][<a href="/1/rss.xml?code_download=36">Download</a>]</p><ol class="code"><li class="line number1 alt1">union&nbsp;{</li><li class="line number2 alt2"> int&nbsp;num;</li><li class="line number3 alt1"> char&nbsp;str[10];&nbsp;//&nbsp;set&nbsp;array&nbsp;str&nbsp;maksimal&nbsp;10&nbsp;char</li><li class="line number4 alt2">}&nbsp;a[3][5];</li><li class="line number5 alt1"></li><li class="line number6 alt2">a[0][0].str&nbsp;=&nbsp;&quot;Friday&quot;;</li><li class="line number7 alt1">a[1][0].num&nbsp;=&nbsp;1;</li><li class="line number8 alt2">a[1][1].num&nbsp;=&nbsp;2;</li><li class="line number9 alt1">a[1][2].num&nbsp;=&nbsp;3;</li><li class="line number10 alt2">a[1][3].num&nbsp;=&nbsp;4;</li><li class="line number11 alt1">a[1][4].num&nbsp;=&nbsp;5;</li><li class="line number12 alt2">a[2][0].str&nbsp;=&nbsp;&quot;Jumat&quot;;</li></ol><p><br />Voila! begitulah kira kira bentuk &#039;array&#039; nya <img src="/smilies/happy.gif" alt=":)" /><br /><br />Cara menampilkan nilai array nya seperti berikut:<br />[<a id="code-37" href="/1/rss.xml?code_textarea=1#code-37">Textarea</a>][<a href="/1/rss.xml?code_raw=37">RAW</a>][<a href="/1/rss.xml?code_download=37">Download</a>]</p><ol class="code"><li class="line number1 alt1"><span style="color: #ff1493;">printf</span>(&quot;String:&nbsp;%s\n&quot;,&nbsp;a[0][0].str);</li><li class="line number2 alt2"><span style="color: #ff1493;">printf</span>(&quot;Number:&nbsp;%d&quot;,&nbsp;a[1][4].num);</li></ol><p><br />Hasilnya:<br />String: Friday<br />Number: 5<br /><br />Terima kasih telah membaca catatan pertama saya ini dalam sesi &quot;Pemprograman C&quot;, semoga bisa membantu apabila ada yang mengalami kendala seperti saya dalam Belajar C Programming. Mohon koreksi kalau ada kesalahan, karena saya hanya belajar secara otodidak alias trial and error. Sampai jumpa lagi di artikel berikutnya <img src="/smilies/happy.gif" alt=":)" />mengubah ukuran img ext2/ext3/ext4/blog/post/368/mengubah-ukuran-img-ext2-ext3-ext4.htmlTue, 15 Sep 2015 23:57:46 +0700/blog/post/368/mengubah-ukuran-img-ext2-ext3-ext4.html#cek filesystem<br />[<a id="code-38" href="/1/rss.xml?code_textarea=1#code-38">Textarea</a>][<a href="/1/rss.xml?code_raw=38">RAW</a>][<a href="/1/rss.xml?code_download=38">Download</a>]</p><ol class="code"><li class="line number1 alt1">e2fsck&nbsp;-f&nbsp;/system.img</li></ol><p>#ubah ukuran system.img ke 1GiB<br />[<a id="code-39" href="/1/rss.xml?code_textarea=1#code-39">Textarea</a>][<a href="/1/rss.xml?code_raw=39">RAW</a>][<a href="/1/rss.xml?code_download=39">Download</a>]</p><ol class="code"><li class="line number1 alt1">resize2fs&nbsp;/system.img&nbsp;1024M</li></ol><p>Test Android-x86/blog/post/367/test-android-x86.htmlSun, 06 Sep 2015 16:29:40 +0700/blog/post/367/test-android-x86.html<a href="http://i.imgur.com/apnJ8cJ.jpg"><img src="http://i.imgur.com/apnJ8cJs.jpg" alt="img" height="90px" /></a><br />Setelah sekian lama tidak mengikuti perkembangan Android x86 (www.android-x86.org), ternyata sejak versi Jelly Bean developer telah membuat image / iso universal. Ini yang saya tunggu-tunggu karena sebelumya cuma bisa jalan di beberapa platform saja, seperti ASUS eeePC. Ketinggalan banget saya karena sekarang sudah release KitKat versi stabil yang ketiga (<a href="http://www.android-x86.org/releases/releasenote-4-4-r3">Android-x86 4.4-r3</a>) hahahaduuhh.... <img src="/smilies/veryhappy.gif" alt=":D" /><br /><br />Langsung saja saya coba.. jreng.. mantap..<br /><br />Sekarang saya bisa BBM-an via PC/netbook <img src="/smilies/happy.gif" alt=":)" /><br /><br />#Thanks to developer.Blog Telah Kembali Online/blog/post/366/blog-telah-kembali-online.htmlSat, 22 Aug 2015 14:44:10 +0700/blog/post/366/blog-telah-kembali-online.htmlBerhubung terjadi gangguan pada hosting yang mengakibatkan hilangnya seluruh data blog, maka data yang bisa ditampilkan adalah data backup terakhir yaitu tanggal <b>04 Oktober 2014</b>.Lama tak update/blog/post/364/lama-tak-update.htmlSun, 10 Aug 2014 09:46:06 +0700/blog/post/364/lama-tak-update.htmlUdh lama gak update skrip... Sampai saatnya pihak hosting menaikkan versi PHP ke 5.4 tp aku gak perlu kelabakan update system karena blog ini tetap berjalan dg baik alias kompatibel di PHP 5.4 <img src="/smilies/happy.gif" alt=":)" />Menghapus File hiberfil.sys/blog/post/362/menghapus-file-hiberfil-sys.htmlFri, 25 Apr 2014 06:55:21 +0700/blog/post/362/menghapus-file-hiberfil-sys.htmlFile <b>hiberfil.sys</b> (<i>hidden, system</i>) yang terletak di system root (misal drive C) dan berukuran cukup besar ini bila dihapus akan menambah kapasitas harddisk yang sudah low space.. <img src="/smilies/cheeky.gif" alt=":p" /><br /><br />Bagaimana cara menghapusnya?<br /><br />Perlu diingat bahwa dengan menghapus <b>hiberfil.sys</b> berarti kita mematikan fungsi hibernasi atau system resume.<br /><br />Caranya buka command prompt dengan administrative privileges atau &quot;Run as Administrator&quot; lalu eksekusi perintah sbb:<br />[<a id="code-40" href="/1/rss.xml?code_textarea=1#code-40">Textarea</a>][<a href="/1/rss.xml?code_raw=40">RAW</a>][<a href="/1/rss.xml?code_download=40">Download</a>]</p><ol class="code"><li class="line number1 alt1">powercfg&nbsp;-h&nbsp;off</li></ol><p><br />File <b>hiberfil.sys</b> akan terhapus dan jika tidak kita bisa menghapusnya secara manual menggunakan Shift+Del.Menghilangkan "Edit boot option" pada Windows 7/blog/post/361/menghilangkan-edit-boot-option-pada-windows-7.htmlSun, 06 Apr 2014 22:58:30 +0700/blog/post/361/menghilangkan-edit-boot-option-pada-windows-7.htmlPernahkan Windows 7 Anda mengalami tampilan seperti berikut ini saat booting?<br /><br />[<a id="code-41" href="/1/rss.xml?code_textarea=1#code-41">Textarea</a>][<a href="/1/rss.xml?code_raw=41">RAW</a>][<a href="/1/rss.xml?code_download=41">Download</a>]</p><ol class="code"><li class="line number1 alt1">Edit&nbsp;boot&nbsp;option</li><li class="line number2 alt2">Edit&nbsp;windows&nbsp;boot&nbsp;option&nbsp;for:&nbsp;Windows&nbsp;7</li><li class="line number3 alt1">Path:\Windows\System32\Winload.exe</li><li class="line number4 alt2">Partition&nbsp;1&nbsp;Hard&nbsp;Disk&nbsp;9430081d&nbsp;/NOEXECUTE=OPTIN</li><li class="line number5 alt1">Press&nbsp;Enter&nbsp;To&nbsp;Sumbit</li></ol><p><br />Hal tersebut terasa mengganggu sebab mengharuskan user untuk menekan Enter tiap kali booting.<br /><br />Solusi / cara mengatasinya jalankan perintah berikut ini pada command prompt (dengan hak akses Administrator tentunya biar tidak &quot;Access denied&quot;*):<br /><br />[<a id="code-42" href="/1/rss.xml?code_textarea=1#code-42">Textarea</a>][<a href="/1/rss.xml?code_raw=42">RAW</a>][<a href="/1/rss.xml?code_download=42">Download</a>]</p><ol class="code"><li class="line number1 alt1">bcdedit&nbsp;/set&nbsp;optionsedit&nbsp;No</li></ol><p><br />* Untuk mengeksekusi perintah dengan hak akses Administrator, Start &gt; Search &gt; Ketik: cmd &gt; Klik Kanan cmd &gt; Run As Administrator.<br /><br />Booting selanjutnya biasanya akan normal kembali.Built-in Administrator Account Windows 7/blog/post/360/built-in-administrator-account-windows-7.htmlThu, 03 Apr 2014 23:52:36 +0700/blog/post/360/built-in-administrator-account-windows-7.htmlPada Windows 7 terdapat akun Administrator yang tersembunyi. Kadang pada saat tertentu yang berhubungan dengan teknis, akun ini diaktifkan sehingga akan tampil pada saat proses logon.<br /><br />Cara mengaktifkan (via command prompt):<br />[<a id="code-43" href="/1/rss.xml?code_textarea=1#code-43">Textarea</a>][<a href="/1/rss.xml?code_raw=43">RAW</a>][<a href="/1/rss.xml?code_download=43">Download</a>]</p><ol class="code"><li class="line number1 alt1">net&nbsp;user&nbsp;Administrator&nbsp;/active:yes</li></ol><p><br />* Administrator adalah nama user<br />* untuk menon-aktifkan, &#039;yes&#039; pada command tersebut diubah menjadi &#039;no&#039;<br /><br />Sekian dulu ah, #capek <img src="/smilies/veryhappy.gif" alt=":D" />Sepi.../blog/post/353/sepi.htmlThu, 05 Sep 2013 08:51:17 +0700/blog/post/353/sepi.htmlSepertinya dunia blogging di Indonesia sudah mulai redup. Kebanyakan copy-paste. Bukankah begitu? <img src="/smilies/surprised.gif" alt=":o" />Selamat Idul Fitri 1434 H/blog/post/352/selamat-idul-fitri-1434-h.htmlThu, 08 Aug 2013 13:28:38 +0700/blog/post/352/selamat-idul-fitri-1434-h.htmlanggit.com mengucapkan, As Alukal Afwan Zahiran wa Bathinan, mohon maaf lahir dan batin <img src="/smilies/happy.gif" alt=":)" />