tag:blogger.com,1999:blog-86472429626470966702024-03-19T18:55:14.984+07:00Izoels NotesIkatlah Ilmu dengan MenulisIzoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.comBlogger344125tag:blogger.com,1999:blog-8647242962647096670.post-69052555484771915282024-02-06T11:51:00.004+07:002024-02-06T12:50:22.431+07:00Code Igniter :: Upload File Base64 jadi image ke Google Cloud Storage<p>Kondisi :: google storage sudah siap .</p><p>download file json google dan taruh di bagian <b>Application/third_party/</b>.</p><p><br /></p><p>Environtment ::</p><p>1. install komposer</p><p>2. buka project di vscode dan ketik <b>composer require google/cloud-storage </b>,</p><p>3. Application/config/config.php :: dibagian paling bawah file config.php tambahkan kode :</p><div style="background-color: #1f1f1f; color: #cccccc; font-family: Consolas, "Courier New", monospace; font-size: 12px; line-height: 16px; white-space: pre;"><div><span style="color: #9cdcfe;">$config</span><span style="color: #d4d4d4;">[</span><span style="color: #ce9178;">'project_id'</span><span style="color: #d4d4d4;">] = </span><span style="color: #ce9178;">'NAMAPROJECT'</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #9cdcfe;">$config</span><span style="color: #d4d4d4;">[</span><span style="color: #ce9178;">'bucket_name'</span><span style="color: #d4d4d4;">] = </span><span style="color: #9cdcfe;">$bucketname</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #9cdcfe;">$config</span><span style="color: #d4d4d4;">[</span><span style="color: #ce9178;">'key_file_path'</span><span style="color: #d4d4d4;">] = </span><span style="color: #ce9178;">'application/third_party/JSONFILE.json'</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #9cdcfe;">$config</span><span style="color: #d4d4d4;">[</span><span style="color: #ce9178;">'google_api_key'</span><span style="color: #d4d4d4;">] = </span><span style="color: #ce9178;">'GOOGLE API KEY'</span><span style="color: #d4d4d4;">;</span></div></div>.<div>4. buat file di dalam folder <b>application/libraries</b> dengan nama file <b>GoogleCloudStorage.php</b> ,</div><div><br /></div><div>5.isi file <b>GoogleCloudStorage.php</b>,</div><div><div style="background-color: #1f1f1f; color: #cccccc; font-family: Consolas, "Courier New", monospace; font-size: 12px; line-height: 16px; white-space: pre;"><div><span style="color: #569cd6;"><?php</span></div><div><span style="color: #dcdcaa;">defined</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'BASEPATH'</span><span style="color: #d4d4d4;">) or </span><span style="color: #c586c0;">exit</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'No direct script access allowed'</span><span style="color: #d4d4d4;">);</span></div><br /><div><span style="color: #569cd6;">use</span><span style="color: #d4d4d4;"> Google\Cloud\Storage\</span><span style="color: #4ec9b0;">StorageClient</span><span style="color: #d4d4d4;">;</span></div><br /><br /><div><span style="color: #569cd6;">class</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">GoogleCloudStorage</span></div><div><span style="color: #d4d4d4;">{</span></div><br /><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">protected</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$ci</span><span style="color: #d4d4d4;">;</span></div><br /><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">__construct</span><span style="color: #d4d4d4;">()</span></div><div><span style="color: #d4d4d4;"> {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">ci</span><span style="color: #d4d4d4;"> = </span><span style="color: #569cd6;">&</span><span style="color: #dcdcaa;">get_instance</span><span style="color: #d4d4d4;">();</span></div><div><span style="color: #d4d4d4;"> }</span></div><br /><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">uploadBase64Image</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$base64ImageData</span><span style="color: #d4d4d4;">, </span><span style="color: #9cdcfe;">$originalObjectName</span><span style="color: #d4d4d4;">, </span><span style="color: #9cdcfe;">$newObjectName</span><span style="color: #d4d4d4;">)</span></div><div><span style="color: #d4d4d4;"> {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$base64ImageData</span><span style="color: #d4d4d4;"> = </span><span style="color: #dcdcaa;">str_replace</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'[removed]'</span><span style="color: #d4d4d4;">, </span><span style="color: #ce9178;">''</span><span style="color: #d4d4d4;">, </span><span style="color: #9cdcfe;">$base64ImageData</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$base64ImageData</span><span style="color: #d4d4d4;"> = </span><span style="color: #dcdcaa;">str_replace</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'data:image/png;base64,'</span><span style="color: #d4d4d4;">, </span><span style="color: #ce9178;">''</span><span style="color: #d4d4d4;">, </span><span style="color: #9cdcfe;">$base64ImageData</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$base64ImageData</span><span style="color: #d4d4d4;"> = </span><span style="color: #dcdcaa;">str_replace</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'data:image/jpeg;base64,'</span><span style="color: #d4d4d4;">, </span><span style="color: #ce9178;">''</span><span style="color: #d4d4d4;">, </span><span style="color: #9cdcfe;">$base64ImageData</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$imageData</span><span style="color: #d4d4d4;"> = </span><span style="color: #dcdcaa;">base64_decode</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$base64ImageData</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #c586c0;">try</span><span style="color: #d4d4d4;"> {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$storage</span><span style="color: #d4d4d4;"> = </span><span style="color: #569cd6;">new</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">StorageClient</span><span style="color: #d4d4d4;">([</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #ce9178;">'projectId'</span><span style="color: #d4d4d4;"> => </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">ci</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">config</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">item</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'project_id'</span><span style="color: #d4d4d4;">),</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #ce9178;">'keyFilePath'</span><span style="color: #d4d4d4;"> => </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">ci</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">config</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">item</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'key_file_path'</span><span style="color: #d4d4d4;">),</span></div><div><span style="color: #d4d4d4;"> ]);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$bucket</span><span style="color: #d4d4d4;"> = </span><span style="color: #9cdcfe;">$storage</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">bucket</span><span style="color: #d4d4d4;">(</span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">ci</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">config</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">item</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'bucket_name'</span><span style="color: #d4d4d4;">));</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$bucket</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">upload</span><span style="color: #d4d4d4;">(</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$imageData</span><span style="color: #d4d4d4;">,</span></div><div><span style="color: #d4d4d4;"> [</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #ce9178;">'name'</span><span style="color: #d4d4d4;"> => </span><span style="color: #9cdcfe;">$originalObjectName</span><span style="color: #d4d4d4;">,</span></div><div><span style="color: #d4d4d4;"> ]</span></div><div><span style="color: #d4d4d4;"> );</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$bucket</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">object</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$originalObjectName</span><span style="color: #d4d4d4;">)-></span><span style="color: #dcdcaa;">rename</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$newObjectName</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #c586c0;">return</span><span style="color: #d4d4d4;"> </span><span style="color: #ce9178;">'Image uploaded and renamed successfully to Google Cloud Storage.'</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #d4d4d4;"> } </span><span style="color: #c586c0;">catch</span><span style="color: #d4d4d4;"> (</span><span style="color: #4ec9b0;">Exception</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$e</span><span style="color: #d4d4d4;">) {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #c586c0;">return</span><span style="color: #d4d4d4;"> </span><span style="color: #ce9178;">'Error: '</span><span style="color: #d4d4d4;"> </span><span style="color: #d4d4d4;">.</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$e</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">getMessage</span><span style="color: #d4d4d4;">();</span></div><div><span style="color: #d4d4d4;"> }</span></div><div><span style="color: #d4d4d4;"> }</span></div><div><span style="color: #d4d4d4;">}</span></div><br /></div></div><div>.</div><div>note ::</div><div>file base64 yang di upload tidak boleh ada encoding dari image nya,</div><div><br /></div><div>untuk mengeksekusi upload ketik :: </div><div></div><blockquote><div>$filename = 'NAMAFOLDER/NAMAFILE. '.jpg';</div><div>$this->googlecloudstorage->uploadBase64Image('BASE64 FILE', 'oldname.jpg', $filename);</div></blockquote><div></div><div>.</div><div><br /></div><div>function untuk melihat :: di dalam model (terserah model yang mana) ,</div><div>misal di sini saya membuat model dengan nama m_function,</div><div>di bagian paling atas file m_function tambahkan text: </div><div><div style="background-color: #1f1f1f; color: #cccccc; font-family: Consolas, "Courier New", monospace; font-size: 12px; line-height: 16px; white-space: pre;"><span style="color: #569cd6;">use</span><span style="color: #d4d4d4;"> Google\Cloud\Storage\</span><span style="color: #4ec9b0;">StorageClient</span><span style="color: #d4d4d4;">;</span></div></div><div>,</div><div>kemudian di dalam class M_function tambahkan :</div><div><div style="background-color: #1f1f1f; color: #cccccc; font-family: Consolas, "Courier New", monospace; font-size: 12px; line-height: 16px; white-space: pre;"><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">__construct</span><span style="color: #d4d4d4;">()</span></div><div><span style="color: #d4d4d4;"> {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">parent</span><span style="color: #d4d4d4;">::</span><span style="color: #dcdcaa;">__construct</span><span style="color: #d4d4d4;">();</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">load</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">library</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'GoogleCloudStorage'</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> }</span></div></div></div><div><br /></div><div>setelah itu buat function ::</div><div><div style="background-color: #1f1f1f; color: #cccccc; font-family: Consolas, "Courier New", monospace; font-size: 12px; line-height: 16px; white-space: pre;"><div><span style="color: #569cd6;">public</span><span style="color: #d4d4d4;"> </span><span style="color: #569cd6;">function</span><span style="color: #d4d4d4;"> </span><span style="color: #dcdcaa;">getImageUrl</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$objectName</span><span style="color: #d4d4d4;">)</span></div><div><span style="color: #d4d4d4;"> {</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$bucketName</span><span style="color: #d4d4d4;"> = </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">bucketname</span><span style="color: #d4d4d4;">();</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$storage</span><span style="color: #d4d4d4;"> = </span><span style="color: #569cd6;">new</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">StorageClient</span><span style="color: #d4d4d4;">([</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #ce9178;">'projectId'</span><span style="color: #d4d4d4;"> => </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">config</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">item</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'project_id'</span><span style="color: #d4d4d4;">),</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #ce9178;">'keyFilePath'</span><span style="color: #d4d4d4;"> => </span><span style="color: #569cd6;">$this</span><span style="color: #d4d4d4;">-></span><span style="color: #9cdcfe;">config</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">item</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'key_file_path'</span><span style="color: #d4d4d4;">),</span></div><div><span style="color: #d4d4d4;"> ]);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$bucket</span><span style="color: #d4d4d4;"> = </span><span style="color: #9cdcfe;">$storage</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">bucket</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$bucketName</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$object</span><span style="color: #d4d4d4;"> = </span><span style="color: #9cdcfe;">$bucket</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">object</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$objectName</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$expires</span><span style="color: #d4d4d4;"> = </span><span style="color: #569cd6;">new</span><span style="color: #d4d4d4;"> </span><span style="color: #4ec9b0;">DateTime</span><span style="color: #d4d4d4;">();</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$expires</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">modify</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">'+1 hour'</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$signedUrl</span><span style="color: #d4d4d4;"> = </span><span style="color: #9cdcfe;">$object</span><span style="color: #d4d4d4;">-></span><span style="color: #dcdcaa;">signedUrl</span><span style="color: #d4d4d4;">(</span><span style="color: #9cdcfe;">$expires</span><span style="color: #d4d4d4;">);</span></div><div><span style="color: #d4d4d4;"> </span><span style="color: #c586c0;">return</span><span style="color: #d4d4d4;"> </span><span style="color: #9cdcfe;">$signedUrl</span><span style="color: #d4d4d4;">;</span></div><div><span style="color: #d4d4d4;"> }</span></div></div></div><div><br /></div><div>untuk mengeksekusi/membaca foto yang sudah terupload :</div><div></div><blockquote><div>$objectName = 'NAMA FOLDER/NAMA FILE. '.jpg';</div><div>$img = $this->m_function->getImageUrl($objectName);</div></blockquote><div></div><div>.</div>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-26504237202727863792023-11-02T08:56:00.008+07:002023-11-02T08:57:19.002+07:00Web Security, Sanitasi Karakter Input - Code Igniter<p>Sanitasi karakter yang akan di input pada web untuk framework code igniter,</p><p>bisa dengan melakukan sanitasi di setiap post, bisa juga dengan memodifikasi sedikit core dari framework ci itu sendiri</p><p>Fungsi ::</p><p>untuk mencegah pentration atau security breaching, dengan mengfilter karakter input untuk mencegah karakter seperti <,>, scipt, select, agar tidak terbaca sebagai code program oleh compiler .</p><p><br /></p><p>Caranya ::</p><p>masuk buka file :: system > core > security.php</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjFhx3kcj2N3l364uzKLyH7TCZVETfKptreKczSrhK_VdXPyf-8T2S0Qdr9KBsl_S9orOfHFmntgrCHZ002Y6j1roXAsU663vsq4WjN_fKJvpDn5GNGrosmk452i5gtzWfOtizWu1_6XeesUIONyWySPpKsN_uRV3C7dofRTDZ2-lalTbp4THUrV3J8ACs" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="367" data-original-width="319" src="https://blogger.googleusercontent.com/img/a/AVvXsEjFhx3kcj2N3l364uzKLyH7TCZVETfKptreKczSrhK_VdXPyf-8T2S0Qdr9KBsl_S9orOfHFmntgrCHZ002Y6j1roXAsU663vsq4WjN_fKJvpDn5GNGrosmk452i5gtzWfOtizWu1_6XeesUIONyWySPpKsN_uRV3C7dofRTDZ2-lalTbp4THUrV3J8ACs=s16000" /></a></div><br /><br /><p></p><p><br /></p><p>modifikasi codingan yang ada di dalam file security tersebut sesuai kebutuhan, contoh :</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgDXM2lgNaCRs_3miQy8posDxC_Ix2e5fnj-87jMeDULbKEkZYiqcXDQ47XdlvOlXzmG5fm1SHa7WNFc2VyZeYTFQtfNGgidTZYT-bkDDEbMceX43WihVDJRXp01MqmKI0fZiNFwps8wjNuNl7JXoXStL3A_cwNZ9dU4MuLAUGBYLqSI2MBE8prExjqYAY" style="margin-left: 1em; margin-right: 1em;"><img data-original-height="386" data-original-width="707" src="https://blogger.googleusercontent.com/img/a/AVvXsEgDXM2lgNaCRs_3miQy8posDxC_Ix2e5fnj-87jMeDULbKEkZYiqcXDQ47XdlvOlXzmG5fm1SHa7WNFc2VyZeYTFQtfNGgidTZYT-bkDDEbMceX43WihVDJRXp01MqmKI0fZiNFwps8wjNuNl7JXoXStL3A_cwNZ9dU4MuLAUGBYLqSI2MBE8prExjqYAY=s16000" /></a></div><br /><br /><p></p><p>fungsi ini akan secara global melakukan replace dari karakter atau kata yang terdaftar dalam list, contoh </p><p>karakter select akan di replace jadi kosong / terhapus,</p><p>karakter \ akan dirubah jadi &#39;, dst</p><p>.</p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-33511314743843796052023-09-27T10:17:00.002+07:002023-09-27T10:23:17.510+07:00Git-Dumper, Pengamanan Web AppsProject yang menggunakan github di dalam folder nya akan ada folder .git yang berfungsi untuk konfigurasi dari github itu sendiri.<div><br /></div><div>nah misalkan folder .git ini tidak diamankan akan memungkinkan attacker untuk dapat mendownload file file system dari aplikasi tersebut. misal ::</div><div><br /></div><div><ol style="text-align: left;"><li>ada web aps https:://abcd.com</li><li>attacker mencoba peruntungan dengan menggunakan git-dumper http://abcd.com/.git/ source_webabcd/</li><li>jika di web abcd.com ini folder .git tidak diamankan maka attacker akan dapat mendownload semua informasi penting pada web bisajadi termasuk konfigurasi database</li></ol><div>solusinya ::</div><div>lakukan pembatasan user akses pada folder .git </div><div><ol style="text-align: left;"><li>pada file .httacces tambahkan syntax :<br /><blockquote>RedirectMatch 404 /\.git</blockquote></li><li>dari system konfigurasi user ::<br /><blockquote>sudo <span class="hljs-built_in" face=""Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: black; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: #e9950c; font-size: 14px; white-space: pre;">chown</span><span face=""Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace" style="background-color: black; color: white; font-size: 14px; white-space: pre;"> root:root /path/to/your/.git/ folder
sudo <span class="hljs-built_in" style="--tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-ring-color: rgba(69,89,164,.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 transparent; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 transparent; --tw-shadow: 0 0 transparent; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(217, 217, 227); box-sizing: border-box; color: #e9950c;">chmod</span> 700 /path/to/your/.git folder</span></blockquote><span face=""Söhne Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace" style="background-color: black; color: white; font-size: 14px; white-space: pre;">
</span></li></ol></div></div>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-73708744974055662422023-09-27T10:01:00.005+07:002023-12-19T10:36:16.489+07:00Content Security Policy, Pengamanan Web APPS<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYSIJwnbTUlgS0Rvo9oJUMoZNwtT08e8Qa60_eLhym0x0ZptvJLF6Yfy6NbuE8rUA4yAXoyBBGvRhY5OFwXJq9HdRB8SHAW2SWAxgQ2PpZOr4AKZiAB9UCiIWW7In2lwFCZ8JgZQ7BKePE4LbGOXnYwUY0oSpWEHUkeUwvGFztDTLBFgMKWl1s0bMm23k/s2048/content-security-policy-icon-2048x2048-vd76ywmq.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="2048" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYSIJwnbTUlgS0Rvo9oJUMoZNwtT08e8Qa60_eLhym0x0ZptvJLF6Yfy6NbuE8rUA4yAXoyBBGvRhY5OFwXJq9HdRB8SHAW2SWAxgQ2PpZOr4AKZiAB9UCiIWW7In2lwFCZ8JgZQ7BKePE4LbGOXnYwUY0oSpWEHUkeUwvGFztDTLBFgMKWl1s0bMm23k/w200-h200/content-security-policy-icon-2048x2048-vd76ywmq.png" width="200" /></a></div><p><br /></p><p>Salah satu dari banyak teknik untuk mengamankan web apps, atau aplikasi web based yaitu dengan menerapkan syntax Content-security-policy</p><p>Misal kasus seperti ini ::</p><p></p><ol style="text-align: left;"><li>ada user web apps yang paham kodingan kode dan punya akses login ke aplikasi, </li><li>user itu membuat suatu file php di hosting pribadi dia dengan syntax yang isinya hal random atau perintah untuk membuat backdoor atau mengirim data data penting ke attaccker dengan nama file customfile_attacker.php</li><li>kemudian dia melakukan input ke system dengan syntax <script src='customfile_attacker.php'></script></li><li>setiap data ini di panggil maka isi syntax di dalam customfile_attacker.php akan dianggap sebagai kesatuan dari file kodingan system.</li></ol><div>solusi ::</div><div>untuk framework CI ::</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiD96FkHtiijoVSqYwUIuD4EOqb76MFGjpG8Q8-RHdM81JHtwqAu2Xv5saCOA-Uy_fm7_lIVXLq1qi0dy3L53N7DGI7cBAZqyyfnBA3wqTTUmTRz5fp_QjxRDLtAKFOxiR0akrmHbRD8TvFCgonZs0VmmMEfX8OhidG8iMO1JngbFmkiLh4YgIpv5JAq4I" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="27" data-original-width="793" src="https://blogger.googleusercontent.com/img/a/AVvXsEiD96FkHtiijoVSqYwUIuD4EOqb76MFGjpG8Q8-RHdM81JHtwqAu2Xv5saCOA-Uy_fm7_lIVXLq1qi0dy3L53N7DGI7cBAZqyyfnBA3wqTTUmTRz5fp_QjxRDLtAKFOxiR0akrmHbRD8TvFCgonZs0VmmMEfX8OhidG8iMO1JngbFmkiLh4YgIpv5JAq4I=s16000" /></a></div>buka application/config/config.php ,cari kodingan <span style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">$config[</span><span style="color: #ce9178; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">'global_xss_filtering'</span><span style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">]</span>,ubah statusnya jadi true</div><div><br /></div><div>settingan ini akan membuat semua input source url di blok oleh CI,</div><div><br /></div><div>solusi lain adalah menambah content security policy ::</div><div><br /></div><div>syntax php </div><div><div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><blockquote>header(<span style="color: #ce9178;">"Content-Security-Policy: default-src *; style-src 'self' 'unsafe-inline'; img-src * 'self' data: https:; script-src 'self' 'unsafe-inline' 'unsafe-eval'; X-Content-Type-Options 'nosniff'"</span>);</blockquote></div></div><div>atau syntax html :</div><div><div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div><span style="color: grey;"></span></div><blockquote><div><span style="color: grey;"><</span><span style="color: #569cd6;">meta</span> <span style="color: #9cdcfe;">http-equiv</span>=<span style="color: #ce9178;">"Content-Security-Policy"</span></div><div> <span style="color: #9cdcfe;">content</span>=<span style="color: #ce9178;">"default-src *; style-src 'self' 'unsafe-inline'; img-src * 'self' data: https:; script-src 'self' 'unsafe-inline' 'unsafe-eval'"</span><span style="color: grey;">></span></div></blockquote><div><span style="color: grey;"></span></div></div></div><div>.</div><div>Content security policy ini berarti tidak memperbolehkan source / sumber daya dari website lain selain dari web server aplikasi ini.</div><div><br /></div><div>jika akan menambahkan exception bisa di tambahkan url web spesifik di dalam scope CSP serpti dibawah :</div><div><div style="background-color: #1f1f1f; color: #cccccc; font-family: Consolas, "Courier New", monospace; font-size: 12px; line-height: 16px; white-space: pre;"><span style="color: #dcdcaa;"></span><blockquote><span style="color: #dcdcaa;">header</span><span style="color: #d4d4d4;">(</span><span style="color: #ce9178;">"Content-Security-Policy:frame-src 'self' data: base64: storage.googleapis.com; default-src *; style-src 'self' 'unsafe-inline'; img-src * 'self' data: https: storage.googleapis.com; object-src 'self' blob: filesystem:; script-src 'self' 'unsafe-inline' 'unsafe-eval';"</span><span style="color: #d4d4d4;">);</span></blockquote><span style="color: #d4d4d4;"></span></div></div><div>.</div><p></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-72312197732861538842023-06-15T11:35:00.005+07:002023-06-15T11:35:43.722+07:00Install SQLSRV di Ubuntu 18.04 PHP 7.3<p>Urutan Prosesnya :</p><p></p><blockquote><p>sudo apt-get install php7.3-xml</p><p>sudo apt install php7.3-dev</p><p>sudo update-alternatives --set php /usr/bin/php7.3</p><p>sudo update-alternatives --set php-config /usr/bin/php-config7.3</p><p>sudo update-alternatives --set phpize /usr/bin/phpize7.3</p><p>sudo pecl install -f sqlsrv</p><p>sudo pecl install -f pdo_sqlsrv</p><p>sudo phpenmod -v 7.3 sqlsrv pdo_sqlsrv</p><p>sudo service apache2 restart </p></blockquote><p></p><p>.</p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-87485257771089890622023-06-15T08:27:00.004+07:002023-06-15T08:36:32.732+07:00Telegram Bot Web Hook<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUg8M2jsDeiqDbIBBJdvdPKBWb8_BbA4fn_Z9VKgw4U7cgKuMXyeK37u_0waJ62N_Qelq9qfghL9fuYXrXq5a1U3R2xFjGQKo_GdmUwVOQOBkWMuqY3kWgP_CfFssuOBfIV12himZiVwB4NxcWxbnVrBoxKgI4pOi1M25HYOaNiyPCTkVSwMrls_pJ/s800/1.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="210" data-original-width="800" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUg8M2jsDeiqDbIBBJdvdPKBWb8_BbA4fn_Z9VKgw4U7cgKuMXyeK37u_0waJ62N_Qelq9qfghL9fuYXrXq5a1U3R2xFjGQKo_GdmUwVOQOBkWMuqY3kWgP_CfFssuOBfIV12himZiVwB4NxcWxbnVrBoxKgI4pOi1M25HYOaNiyPCTkVSwMrls_pJ/s16000/1.jpg" /></a></div><br /> <p></p><p>Semisalkan susdah membuat telegram bot, nah ingin membuat registrasi supaya user bisa mendaftarkan diri jadi member telegram bot dan registrasinya dari website.</p><p></p><ol><li>Buatlah telegram bot,</li><li>buat file untuk menangkap response webhook di cpanel :<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjldnjo5RKH_lElHcz6KHwPwigvGcP80xvlpLH2aBfugqG2CXx9LqQ35_MZ1rji0rWHHutH8v6q73G7XQ2S4dkSHqAg1SgCTPci87Oo3j6he6aZzMwOZ3DiR_RJRSxUUYhtOy_156IgOgoWGuqfIDH5Ff1ffF0VF-75b2o-qFy0Tnw5foSSiiU_7NXOA/s1253/telebot1.png" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" data-original-height="404" data-original-width="1253" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjldnjo5RKH_lElHcz6KHwPwigvGcP80xvlpLH2aBfugqG2CXx9LqQ35_MZ1rji0rWHHutH8v6q73G7XQ2S4dkSHqAg1SgCTPci87Oo3j6he6aZzMwOZ3DiR_RJRSxUUYhtOy_156IgOgoWGuqfIDH5Ff1ffF0VF-75b2o-qFy0Tnw5foSSiiU_7NXOA/s16000/telebot1.png" /></a><br />yang warna hijau adalah perintah registrasi yang harus di ketik user ketika akan membuka website registrasi misal disini kita kasi text <b><span style="color: red;">register_bot</span></b>,<br />kemudian url registrasi akan di arahkan ke website :http://someweb.com/registrasi_telebot</li><li>setting telebot dengan akses url :<br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgpCQOwQXfzobhP3VBal2RN_HXU1L6hk1iPzFN0VyVa-kk1u0K9FydtLOqB2PHhcWy0g-cTIT1v4GXd5OwXzCTgoetUBpciin3Pgdz6s72g0nzOh_Ict_FtMH_xziXm6G_aUmdx_5hlnpxDb7iRlHeS_WgnewtWO4GZ-xsCOKP3UTCmjhwYpUvrk-hA1Q" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="38" data-original-width="1189" src="https://blogger.googleusercontent.com/img/a/AVvXsEgpCQOwQXfzobhP3VBal2RN_HXU1L6hk1iPzFN0VyVa-kk1u0K9FydtLOqB2PHhcWy0g-cTIT1v4GXd5OwXzCTgoetUBpciin3Pgdz6s72g0nzOh_Ict_FtMH_xziXm6G_aUmdx_5hlnpxDb7iRlHeS_WgnewtWO4GZ-xsCOKP3UTCmjhwYpUvrk-hA1Q=s16000" /></a></div><br /><br /></li><li>buka telegram dan masuk ke dalam bot, setelah pencet /start, untuk membuka form registrasi telebot ketikkan /<b><span style="color: red;">register_bot</span></b> di dalam bot tersebut, maka akan muncul form registrasi telebot</li></ol><div><br /></div><div><a href="https://telegram-bot-sdk.readme.io/reference/setwebhook">referensi</a></div><p></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-60325024192798271132023-06-13T11:55:00.000+07:002023-06-13T11:55:00.334+07:00Telegram Bot, Kirim Notifikasi ke Bot<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUg8M2jsDeiqDbIBBJdvdPKBWb8_BbA4fn_Z9VKgw4U7cgKuMXyeK37u_0waJ62N_Qelq9qfghL9fuYXrXq5a1U3R2xFjGQKo_GdmUwVOQOBkWMuqY3kWgP_CfFssuOBfIV12himZiVwB4NxcWxbnVrBoxKgI4pOi1M25HYOaNiyPCTkVSwMrls_pJ/s1144/1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="301" data-original-width="1144" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUg8M2jsDeiqDbIBBJdvdPKBWb8_BbA4fn_Z9VKgw4U7cgKuMXyeK37u_0waJ62N_Qelq9qfghL9fuYXrXq5a1U3R2xFjGQKo_GdmUwVOQOBkWMuqY3kWgP_CfFssuOBfIV12himZiVwB4NxcWxbnVrBoxKgI4pOi1M25HYOaNiyPCTkVSwMrls_pJ/s16000/1.jpg" /></a></div><br /> <p></p><p>Pertama harus sudah ada token telegram bot, contoh :</p><div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><span style="color: #569cd6;">private</span> $token = <span style="color: #ce9178;">'XXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'</span>; </div><p><br /></p><p>Perintah untuk mengirim :</p><div style="background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div> $link = <span style="color: #ce9178;">'https://api.telegram.org:443/bot'</span> . <span style="color: #569cd6;">$this</span>->token . <span style="color: #ce9178;">''</span>;</div><div> $parameters = [</div><div> <span style="color: #ce9178;">'chat_id'</span> => $idbot,</div><div> <span style="color: #ce9178;">'text'</span> => $text</div><div> ];</div><div> $url = $link . <span style="color: #ce9178;">'/sendMessage?'</span> . http_build_query($parameters);</div><div> file_get_contents($url);</div></div><p>.</p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-49964663661269859262023-06-05T13:40:00.002+07:002023-06-05T13:40:15.657+07:00ETL - Pentaho zero value prohibited<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUoFZLT7Y7q0hO3X63AdFMLFjcyawWmqmXWz_nvxRV4zVZXEcn6axBcnXKaOUCnbfJPT3MCXfSQWejRekG1qWwAXE05SZ0UhajSkLiWwV8oUn-GhAuUWM3RDVom0C_Es1qFZn34VHsyqyo8p8uVFA7GHzDOpB-F3tAlX-o-UaQ6PtM9E5aEi550m5E/s1473/Td9yE.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="899" data-original-width="1473" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUoFZLT7Y7q0hO3X63AdFMLFjcyawWmqmXWz_nvxRV4zVZXEcn6axBcnXKaOUCnbfJPT3MCXfSQWejRekG1qWwAXE05SZ0UhajSkLiWwV8oUn-GhAuUWM3RDVom0C_Es1qFZn34VHsyqyo8p8uVFA7GHzDOpB-F3tAlX-o-UaQ6PtM9E5aEi550m5E/s16000/Td9yE.png" /></a></div><br /><div><a href="https://stackoverflow.com/questions/49814937/pentaho-date-format-issue">sumber gambar</a></div><div><br /></div>Error : muncul error yang kurang lebih maknanya, nilai dari variabel dengan tipe data 'date' / date time ini nilainya nol atau 0000-00-00,<div>solusinya adalah mereplace nilai yang nol itu, karena akan repot kalau harus me replace dari database asal setiap akan melakukan backup, maka solusinya adalah me replace nilai noll itu ketika data di transfter ke tabel tujuan.</div><div><br /></div><div>di tabel input, edit koneksinya kemudian klik options :</div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjbioWo7ZBERU1Rzu45RCAjf1hUZetGxYq1RW9TV0y-_KGyDY87L39MAel5tvQM4-H2Fk-vJxtF1SK9ih795f-p-bHSUeAR5rkV8FO3MCtG0wMRRzyzIyymFB3JjUDVtL_Eb2_iNfaGt-6aevoYLSgVCWQbwHIompn24cdowhQVOg82Vxk9YZtubtMb" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="616" data-original-width="1013" src="https://blogger.googleusercontent.com/img/a/AVvXsEjbioWo7ZBERU1Rzu45RCAjf1hUZetGxYq1RW9TV0y-_KGyDY87L39MAel5tvQM4-H2Fk-vJxtF1SK9ih795f-p-bHSUeAR5rkV8FO3MCtG0wMRRzyzIyymFB3JjUDVtL_Eb2_iNfaGt-6aevoYLSgVCWQbwHIompn24cdowhQVOg82Vxk9YZtubtMb=s16000" /></a></div><br /><br /></div><div>.</div><div>di kolom parameter isikan :<br />parameter : <b>zeroDateTimeBehavior</b></div><div>value : <b>convertToNull</b></div><div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjpqp8iNuczLQkzMjefGQ_vvWzlyVr_dqFVNHwBp34Ro6Quj0fDESJIZheVj5DjTZZmj8eeEG9rQPIHPbG-M5lLfahHcZ84SfRCTnA1IIPvjCELU18qUyTVZTt9B7av_HeOrbhY8ACqu_u8JWnFA_NLxLRRvasP3nNBf_PimOZJLw4EdsvC_4qxSu3U" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="416" data-original-width="677" src="https://blogger.googleusercontent.com/img/a/AVvXsEjpqp8iNuczLQkzMjefGQ_vvWzlyVr_dqFVNHwBp34Ro6Quj0fDESJIZheVj5DjTZZmj8eeEG9rQPIHPbG-M5lLfahHcZ84SfRCTnA1IIPvjCELU18qUyTVZTt9B7av_HeOrbhY8ACqu_u8JWnFA_NLxLRRvasP3nNBf_PimOZJLw4EdsvC_4qxSu3U=s16000" /></a></div><br /><br /></div><div>.</div>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-76479316816088521272023-05-30T10:35:00.002+07:002023-05-30T10:36:12.593+07:00ETL - Backup Data Pentaho - Pembuatan Task Scheduler Windows<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEije0owDLoY6KB675DLysFHy3GqbBEtUpxShXEOdaAcGXjirnvcLN7fVc5OjYegqT4h2ELZTRiEdZF93eeu7MQl9K_WTS2pqnZyjBusSimpKt7lNoWEYVMVP2QOe_MooO0BvcT7zdjSLBTEWBY0N7MUUoIcKghlmy89pyCO-tAn1y1c4OC6tKK_nays" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="380" data-original-width="366" src="https://blogger.googleusercontent.com/img/a/AVvXsEije0owDLoY6KB675DLysFHy3GqbBEtUpxShXEOdaAcGXjirnvcLN7fVc5OjYegqT4h2ELZTRiEdZF93eeu7MQl9K_WTS2pqnZyjBusSimpKt7lNoWEYVMVP2QOe_MooO0BvcT7zdjSLBTEWBY0N7MUUoIcKghlmy89pyCO-tAn1y1c4OC6tKK_nays=s16000" /></a></div><br /> <p></p><p>Pembuatan task scheduler dengan memanfaatkan program bawaan windows (Task Scheduler),</p><p>agar jobs yang telah dibuat di pentaho dapat dijalankan di task scheduler , </p><p>Pertama buka notepad atau vscode, atau editor lainya, disini sya pakai vscode :</p><p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh0I1u6O0QhQkgxlLmdtWxQB7s1rBbRLBBUoAmWdQMejzzte5g3lK0JVoBJ3nZZhAYncVBlgsOZfd6D7Cl1N5u_UKB2DP0BfHDj9IjIgU-1cjlSEMmkiEFnKROfO60vMSv5kRU77wz0eaGtMHYuIk0ucwmQskV8XpJ2BzL3v8gIsscGWr9ktzXEOdWg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="144" data-original-width="812" src="https://blogger.googleusercontent.com/img/a/AVvXsEh0I1u6O0QhQkgxlLmdtWxQB7s1rBbRLBBUoAmWdQMejzzte5g3lK0JVoBJ3nZZhAYncVBlgsOZfd6D7Cl1N5u_UKB2DP0BfHDj9IjIgU-1cjlSEMmkiEFnKROfO60vMSv5kRU77wz0eaGtMHYuIk0ucwmQskV8XpJ2BzL3v8gIsscGWr9ktzXEOdWg=s16000" /></a></div><br /><br /></div><p></p><p>ketik :</p><blockquote><p>call [drive pentaho]\kitchen.bat /file:[file job pentaho yang tersimpan]\[namajob].kjb</p></blockquote><p>file ini harus disimpan dengan extensi .bat ,</p><p>nah file bat ini yang dipanggil dari task scheduler windows.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgj5qGUReHSb0-_-6vgYw8Z2yrQfPtRvlQ1R5PCGyDWmLnnGLgJiOFJpE9UtcwJtcHaZ3_X_LppXyQiGw4uAh9FYmHWQ8YRDusge8Ebdn32tXCq7F5oMXHd1cwoUtCOy2ZOAwML2mun_9TdWEkKL6Hj4qj6xbzgwv11DhPFiSwaYDCPd8tR4oOf2Cto" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="531" data-original-width="750" src="https://blogger.googleusercontent.com/img/a/AVvXsEgj5qGUReHSb0-_-6vgYw8Z2yrQfPtRvlQ1R5PCGyDWmLnnGLgJiOFJpE9UtcwJtcHaZ3_X_LppXyQiGw4uAh9FYmHWQ8YRDusge8Ebdn32tXCq7F5oMXHd1cwoUtCOy2ZOAwML2mun_9TdWEkKL6Hj4qj6xbzgwv11DhPFiSwaYDCPd8tR4oOf2Cto=s16000" /></a></div><br /><br /><p></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-57216144708710297222023-05-30T09:25:00.004+07:002023-06-05T13:46:45.114+07:00ETL - Pentaho, Backup Data<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv57CPNGiv-3UYszEwn-cxThvwSY-PuUQn14KENR69R8tvGE719rYFUwK7pdVWU4Qhhbg8WPw-ozVIifkCyadwyRnMM91DQBSNbuMHDFuYp89zqZQS_74LYhW0WyBy_RShjxP3PyZSVpjJffHWw2M3CepqFQzhl3gfHWj_ttgJj3UQBXYST-wlGBkS/s1000/5d37cdd8ec8a4.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1000" data-original-width="1000" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiv57CPNGiv-3UYszEwn-cxThvwSY-PuUQn14KENR69R8tvGE719rYFUwK7pdVWU4Qhhbg8WPw-ozVIifkCyadwyRnMM91DQBSNbuMHDFuYp89zqZQS_74LYhW0WyBy_RShjxP3PyZSVpjJffHWw2M3CepqFQzhl3gfHWj_ttgJj3UQBXYST-wlGBkS/s320/5d37cdd8ec8a4.jpg" width="320" /></a></div><br /><p><br /></p><p>Extract, transform, and load (ETL), adalah proses penarikan data atau penggabungan data dari sumber data A ke tempat penyimpanan atau repository lain, kira-kira seperti itu pengertinaya.</p><p>Software ini digunakan untuk membuat pemetaan pengiriman data yang akan di kumpulkan menjadi satu, bisa juga digunakan untuk membackup database,</p><p>disini akan jelaskan contoh pembuatan skema backup database dan pembuatan scheduler dengan software ini.</p><p><a href="https://sourceforge.net/projects/pentaho/">download dulu software nya di link ini</a>. </p><p><a href="https://drive.google.com/file/d/1veC1Pyyu9LvySqeCcI4hKxr4NLpeOeaT/view?usp=drive_link">mysql konektor</a>.==> jika koneksi ke mysql download ini dan masukkan ke folder lib</p><p>Software ini tidak dalam bentuk installan, jadi hanya di extrak saja foldernya.</p><p>Setelah di download dan di extrak buka Spoon.bat</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgp84RT0wDrnk8IW7CxOvuvjIVmoppugxvAUm9WfpPvWW1fbHpHtbTv6IV2CcVvtj8E9776gMaYXD-rxloEdE_6bF3szlydXdBwLetM4X6E4vrRgbWxLYLPNnNelqr1bRVga3wX8dynXV_ciZU1EHsBbKjW6GNX2K7uCV1W-Njm-sONEjHWeWTHnetT" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="347" data-original-width="731" src="https://blogger.googleusercontent.com/img/a/AVvXsEgp84RT0wDrnk8IW7CxOvuvjIVmoppugxvAUm9WfpPvWW1fbHpHtbTv6IV2CcVvtj8E9776gMaYXD-rxloEdE_6bF3szlydXdBwLetM4X6E4vrRgbWxLYLPNnNelqr1bRVga3wX8dynXV_ciZU1EHsBbKjW6GNX2K7uCV1W-Njm-sONEjHWeWTHnetT=s16000" /></a></div><br /><br /><p></p><p>akan muncul loading seperti ini, tunggu saja sampai terbuka aplikasinya</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiHJ3KpydAR9Q5LGpoW0fggPtx2Vkwee8xM8OaV7M8SruxV1leB0qlzzR7DxwwsOxl_VOU4SXguzI-cXAfgGrM-8sjC8nu5xFUwbeDNTTV6oQsJ22DnSE74qtSe3aLcUr4RdpsIfrHvgu3FSSXxg2_iG_BeI70CJzqO8eAzi87fhklsC7G556sBm_ff" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="499" data-original-width="699" src="https://blogger.googleusercontent.com/img/a/AVvXsEiHJ3KpydAR9Q5LGpoW0fggPtx2Vkwee8xM8OaV7M8SruxV1leB0qlzzR7DxwwsOxl_VOU4SXguzI-cXAfgGrM-8sjC8nu5xFUwbeDNTTV6oQsJ22DnSE74qtSe3aLcUr4RdpsIfrHvgu3FSSXxg2_iG_BeI70CJzqO8eAzi87fhklsC7G556sBm_ff=s16000" /></a></div><br /><br /><p></p><p>tampilan awal :</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh13ZqzvQ9UEYzBaQ2Xidtjp8hb0RcrbBp2P1uS_BKZGkyk1EaSr4pnNHNZueaQnzzLrsCrvkGbdaSq7Ety-q-8IWdWh82CNmvwL6w5Ve4UkWMlkSAs376yKUz_-x4ib2dqJWsWCQduFCevmzESadjc_f-7fgsyFbtF6BbjV2zS59KnWbuCsJdw6RbU" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="695" data-original-width="1328" src="https://blogger.googleusercontent.com/img/a/AVvXsEh13ZqzvQ9UEYzBaQ2Xidtjp8hb0RcrbBp2P1uS_BKZGkyk1EaSr4pnNHNZueaQnzzLrsCrvkGbdaSq7Ety-q-8IWdWh82CNmvwL6w5Ve4UkWMlkSAs376yKUz_-x4ib2dqJWsWCQduFCevmzESadjc_f-7fgsyFbtF6BbjV2zS59KnWbuCsJdw6RbU=s16000" /></a></div><br /><br /><p></p><p>yang akan kita buat skema nya seperti ini </p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjV7PMBnfvdiGPhjCYuUe9QUjXQy36BkOJxftufdrXwV-GVQmriAsbGEGYuMeDpzg8CBmj0d6rsCfhEOWXza8KYWSfMjiJUmR4m-OOe4J3TdMa1fb2qKxKwQpYkforCgUeekysKjT1gbu8379D9qr0muPJP3ieiuv6TYwuLmu3STmhFAder4Aka8S3t" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="328" data-original-width="424" src="https://blogger.googleusercontent.com/img/a/AVvXsEjV7PMBnfvdiGPhjCYuUe9QUjXQy36BkOJxftufdrXwV-GVQmriAsbGEGYuMeDpzg8CBmj0d6rsCfhEOWXza8KYWSfMjiJUmR4m-OOe4J3TdMa1fb2qKxKwQpYkforCgUeekysKjT1gbu8379D9qr0muPJP3ieiuv6TYwuLmu3STmhFAder4Aka8S3t=s16000" /></a></div><br /><br /><p></p><p></p><ul style="text-align: left;"><li>transformation : ini adalah prosees dimana kita mendefinisikan tabel yang akan di backup ke database mana</li><li>job : job ini adalah kumpulan query backup tabel yang akan di jalankan saat dibuat task scheduler</li></ul><p></p><p><br /></p><p>Pertama klik File->new->transformation</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhDgNlw36rSxxRzlap-LqRiEZAklH6apz06mdi00CYYQGfwqGP2PZc3yKBrrBPMqxRViJsOSwNvUqaXtOTJvjjJqpqBBPLTgDCaaFozbqASIrNAMn9fNXPjv7BVGYbOUc2YpmuKO3RDToJv-rYQhmepVyapawAFolkWtBsNawhxGZZ8gIaeQmFoqhmo" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="374" data-original-width="649" src="https://blogger.googleusercontent.com/img/a/AVvXsEhDgNlw36rSxxRzlap-LqRiEZAklH6apz06mdi00CYYQGfwqGP2PZc3yKBrrBPMqxRViJsOSwNvUqaXtOTJvjjJqpqBBPLTgDCaaFozbqASIrNAMn9fNXPjv7BVGYbOUc2YpmuKO3RDToJv-rYQhmepVyapawAFolkWtBsNawhxGZZ8gIaeQmFoqhmo=s16000" /></a></div><br /><br /><p></p><p>kemudian setelah terbuka lembar baru, cari table di kolom sebelah kiri, dan di icon bertuliskan "Tabel Input" geser ke kanan :</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhO4gY32BqsI_rc8NJ71Fxi7t82xV9VZJbgDwTZRgqq6zTlil44ey1IQoosqZXpUe-hQcsXpQSQnvNiPCxPoiWg0f1II_Aizs4R3wKAk8qHGHBlfSo0ekYEZFbe7NWxj9NZjCUJQuspKi2DqXilUaYtzjbvYeMAYydGvtDRSWdPUCh1YKCe0IJsgRdT" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="497" data-original-width="812" src="https://blogger.googleusercontent.com/img/a/AVvXsEhO4gY32BqsI_rc8NJ71Fxi7t82xV9VZJbgDwTZRgqq6zTlil44ey1IQoosqZXpUe-hQcsXpQSQnvNiPCxPoiWg0f1II_Aizs4R3wKAk8qHGHBlfSo0ekYEZFbe7NWxj9NZjCUJQuspKi2DqXilUaYtzjbvYeMAYydGvtDRSWdPUCh1YKCe0IJsgRdT=s16000" /></a></div><br /><br /><p></p><p>untuk mengkonfigurasi tabel input klik dua kali di icon table input yang sudah ada dii kolom kanan:</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEibBwDa2yqKLXMEZLiVcVhrByym9hjrElPuKXeJJF1SnUcqoY7W8UxJlM9diL-7Oo0NTMwRopIastzQC-wqVm7Dinr_BBiGuazQwglwjeuGBcmm--X_Ndjk28kbP2fTuzR83drVDzyRClsl8A999I4dQP7Brf2-iS5iW0d4cLt_A2XejJelPp9m65uZ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="554" data-original-width="1062" src="https://blogger.googleusercontent.com/img/a/AVvXsEibBwDa2yqKLXMEZLiVcVhrByym9hjrElPuKXeJJF1SnUcqoY7W8UxJlM9diL-7Oo0NTMwRopIastzQC-wqVm7Dinr_BBiGuazQwglwjeuGBcmm--X_Ndjk28kbP2fTuzR83drVDzyRClsl8A999I4dQP7Brf2-iS5iW0d4cLt_A2XejJelPp9m65uZ=s16000" /></a></div><br />.<p></p><p>nah ssetelah buat koneksi baru dengan klik new buat setting database nya :</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhEf80q2kTcETu492DD7R1VLYrI8tqotgRNUn-EBL1CTBNdyRMhPXhIlZ1T3bB3Nu3vsRf3fcIQz43Ni5O9XGOe_GU7N0qmK9vYkSTM_iEA71i4MFvos2n7tccYeYPt8dh7s62PBrrfQMU8iY8vpbvC66RNtj6P86-97h_D5yyUCo2lgUpGZxwAZ2pw" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="644" data-original-width="975" height="1" src="https://blogger.googleusercontent.com/img/a/AVvXsEhEf80q2kTcETu492DD7R1VLYrI8tqotgRNUn-EBL1CTBNdyRMhPXhIlZ1T3bB3Nu3vsRf3fcIQz43Ni5O9XGOe_GU7N0qmK9vYkSTM_iEA71i4MFvos2n7tccYeYPt8dh7s62PBrrfQMU8iY8vpbvC66RNtj6P86-97h_D5yyUCo2lgUpGZxwAZ2pw" width="1" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh0Gaox-8-xg_ovhLSh-03TVJ_56izSb7OScyYXP1j7ZtSDO3EfuYm4ivkCzyZsAD60_EiNcfmaPbhId6odswSOpfBj2PAmHCZD7M2U-RcE_ZjHrlcuHuDynGp3WWve5aXUsG2mDpYvrBNljMiuhCVsId6jDhipkZElEfDFGUYkMM7xsErHf3Ghe-Ek" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="644" data-original-width="975" src="https://blogger.googleusercontent.com/img/a/AVvXsEh0Gaox-8-xg_ovhLSh-03TVJ_56izSb7OScyYXP1j7ZtSDO3EfuYm4ivkCzyZsAD60_EiNcfmaPbhId6odswSOpfBj2PAmHCZD7M2U-RcE_ZjHrlcuHuDynGp3WWve5aXUsG2mDpYvrBNljMiuhCVsId6jDhipkZElEfDFGUYkMM7xsErHf3Ghe-Ek=s16000" /></a></div><br /><br />.isi sesuai keperluan, disini saya pakai Mysql, setelah selesai setting klik oke,<p></p><p>setelah itu isikan query di kolom sql, jika bisa di preview berarti sudah berhasil terkoneksi :</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhd9G0JL2_kUDpZ26bz1QhawxPuPu3PzdbMWyn3zxOHqqfhrHoYPHV-C5Ol8DcuhxpOqFTh9DooixqGEeu6yDqV27NT2fkV2r69mZiNNVWBkA7ARA9fKmrjwop-A9T0Rf2uAn4hXr49PRmNcadKJ0L2tjUVVNdt2pqwuKOcWMTlr1tbTMJa8aWiTm_y" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="535" data-original-width="816" src="https://blogger.googleusercontent.com/img/a/AVvXsEhd9G0JL2_kUDpZ26bz1QhawxPuPu3PzdbMWyn3zxOHqqfhrHoYPHV-C5Ol8DcuhxpOqFTh9DooixqGEeu6yDqV27NT2fkV2r69mZiNNVWBkA7ARA9fKmrjwop-A9T0Rf2uAn4hXr49PRmNcadKJ0L2tjUVVNdt2pqwuKOcWMTlr1tbTMJa8aWiTm_y=s16000" /></a></div><br /><br /><p></p><p>jika berhasil di preview maka klik oke, sampai situ pembacaan tabel yang akan di backup selesai.</p><p>Selanjutanya bikin tabel / database tujuan :</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhxaNQYs64UstuT8Xhmzsea0sgrMOlf3H8dq_RBOru4-FaOPfY1MMfiDpWS6r_pPpKO4kM1lWCeA1WmQEFV8aLmFODaQRIitYOf5cGozmYCIQgWnX8_zeANGCIzJFpGlrvyXS6yRW0t6GQzp27W2LtFRDHa9ZiA_nZD9CK3A6kHfG9DDIRRThCx1WMs" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="441" data-original-width="786" src="https://blogger.googleusercontent.com/img/a/AVvXsEhxaNQYs64UstuT8Xhmzsea0sgrMOlf3H8dq_RBOru4-FaOPfY1MMfiDpWS6r_pPpKO4kM1lWCeA1WmQEFV8aLmFODaQRIitYOf5cGozmYCIQgWnX8_zeANGCIzJFpGlrvyXS6yRW0t6GQzp27W2LtFRDHa9ZiA_nZD9CK3A6kHfG9DDIRRThCx1WMs=s16000" /></a></div><br /><br /><p></p><p>.konfigurasikan tabel output : yaitu lokasi server & database tujuan yang akan digunakan untuk menampung data yang akan di backup, klik new:<br />di tabel ini pastikan database tujuanya berbeda dan target table terisi, opsi truncate table ini untuk menghindari duplicate jika akan mengcopy ulang semua data di tabel asal, sehingga tidak terjadi konflik di PK atau duplicate data</p><p></p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgOjinQLdlU8c2N1EP6V8SvZBf5muTTRkE9_zDE-Pg2Qc8Hulx9K0yQImZw7k0Gr01ZjjDrTgSu5IvA5TKN_wmbfiKqVKxxc2ltaOLc-tWRr_wmiJAIWk2BQo6YYAHMJ90rPnJGrdR4hQ2xqjWCu_6Ye7MwiSK5n51HmNX6jBL23vXN8W_RxaTnCxoX" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="595" data-original-width="958" src="https://blogger.googleusercontent.com/img/a/AVvXsEgOjinQLdlU8c2N1EP6V8SvZBf5muTTRkE9_zDE-Pg2Qc8Hulx9K0yQImZw7k0Gr01ZjjDrTgSu5IvA5TKN_wmbfiKqVKxxc2ltaOLc-tWRr_wmiJAIWk2BQo6YYAHMJ90rPnJGrdR4hQ2xqjWCu_6Ye7MwiSK5n51HmNX6jBL23vXN8W_RxaTnCxoX=s16000" /></a></div><br /><br /></div><br />.konfigurasikan database yang digunakan untuk backup<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgy1OghjVGnEGaEul3X_LVMXGxSfNvHsEWsy0VrWLQxEDUmX76QoEKnMULz9Y1ioH62OfnyFiSdGBHIXgJ10akwwgin0usdU6omdfI8JTg_BZmXx4Nuxd7BdBEwE-upN_CcCgQbQFrTvxkEICl9wa_CMsf3rU0cuPAqduasv1uOgfPDkvg1d5-bJcRm" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="659" data-original-width="1138" src="https://blogger.googleusercontent.com/img/a/AVvXsEgy1OghjVGnEGaEul3X_LVMXGxSfNvHsEWsy0VrWLQxEDUmX76QoEKnMULz9Y1ioH62OfnyFiSdGBHIXgJ10akwwgin0usdU6omdfI8JTg_BZmXx4Nuxd7BdBEwE-upN_CcCgQbQFrTvxkEICl9wa_CMsf3rU0cuPAqduasv1uOgfPDkvg1d5-bJcRm=s16000" /></a></div><br /><br /><p></p><p>klik test, jika berhasil maka akan muncul pesan yang menandakan koneksi sukses.</p><p>sekarang kita punya dua icon di layar yang sudah di konfigurasi</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi9WK-szxRn30hZUw3_kZJfppba2_nOjJgEQC7rP91gKrNyQR3knCpXlOcZbsyU_b8jdHC4pfKYikk1Y_VlFroHhhOtLVbMNeXNGsEtFrTIDN0R6Lm5QcsQRi11izR-38PEB-TGTVRV0MlM3pAgzXtvQbi3Upy758iCVBmn8D_vN1wDGOhV07DhJctn" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="309" data-original-width="752" src="https://blogger.googleusercontent.com/img/a/AVvXsEi9WK-szxRn30hZUw3_kZJfppba2_nOjJgEQC7rP91gKrNyQR3knCpXlOcZbsyU_b8jdHC4pfKYikk1Y_VlFroHhhOtLVbMNeXNGsEtFrTIDN0R6Lm5QcsQRi11izR-38PEB-TGTVRV0MlM3pAgzXtvQbi3Upy758iCVBmn8D_vN1wDGOhV07DhJctn=s16000" /></a></div><br />.<p></p><p>klik 1x pada tabel input dan klik icon yang diberi tanda panah dibawah</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjZ5ybjs6IUwU2rsEmtXAo2SnMrWSTcK2sYLi8NX4GbCXrJTZS-v0ogmpa3c88P1_HvSGo_AQCmw12KxDEfjVUTL4jztEx05Rpnnw8442TY0vYvETa0C8vHkx2MGQoNQR9-bdQDsw7pKYmwAFBTzsnhIJkd4dsQR0yhUbwDxHNJkfjWk1VeX2HZZHGG" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="321" data-original-width="702" src="https://blogger.googleusercontent.com/img/a/AVvXsEjZ5ybjs6IUwU2rsEmtXAo2SnMrWSTcK2sYLi8NX4GbCXrJTZS-v0ogmpa3c88P1_HvSGo_AQCmw12KxDEfjVUTL4jztEx05Rpnnw8442TY0vYvETa0C8vHkx2MGQoNQR9-bdQDsw7pKYmwAFBTzsnhIJkd4dsQR0yhUbwDxHNJkfjWk1VeX2HZZHGG=s16000" /></a></div><br /><br /><p></p><p>klik dan tahan untuk menghubungkan dengan tabel output</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiPXn_1d1hfdGuDkGHeDYxM_8fRpC0yf7FR691yhjCL2Ce79fLxluzn6wtMMShpkiAylPTtGVyd-CdB2NCh0FwUZFMssGK1y1VClhD0rwNoZn5PDZHrPihjI21ElITunfklcs_xmAh0hYgAmaq0_GlPxtDp57UN5ze3PY2n1HDzK3nsTdbHRkfssBRk" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="274" data-original-width="516" src="https://blogger.googleusercontent.com/img/a/AVvXsEiPXn_1d1hfdGuDkGHeDYxM_8fRpC0yf7FR691yhjCL2Ce79fLxluzn6wtMMShpkiAylPTtGVyd-CdB2NCh0FwUZFMssGK1y1VClhD0rwNoZn5PDZHrPihjI21ElITunfklcs_xmAh0hYgAmaq0_GlPxtDp57UN5ze3PY2n1HDzK3nsTdbHRkfssBRk=s16000" /></a></div><br /><br /><p></p><p>.</p><p><br /></p><p>simpan transofrmation ini di hardisk, sampai saat ini pembuatan transformation / aksi backup yang akan dijalankan selesai, selanjutnya buat hal yang sama / lebih dari 1 transfoormation dengan tabel yang berbeda.</p><p><br /></p><hr /><p>setelah selesai kita buat Jobs nya, jika transformation adalah detail yang akan di kerjakan (misal: data tabel A dalam db AA akan di kirim ke tabel B di db BB), jobs adalah perintah untuk menjalankan pekerjaan tsb.</p><p>Klik File > new > job</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjZ9XL7BEse_MbWgVEpOMTGjCTvdWx2eEUpr0EG_2dTRTjAwTJkitlyTberzOBAOiDW8ljXetQ331bA0XjOqC75tY0EZDvTLMLA9_ssoeigc-SMNcBTPH9X3gVH8UYoHhYSMNqE815tNbuf3SjaORi2ids0pVP4PlF_ELPVrwXTqJ_qq_Sznm6AciyS" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="403" data-original-width="602" src="https://blogger.googleusercontent.com/img/a/AVvXsEjZ9XL7BEse_MbWgVEpOMTGjCTvdWx2eEUpr0EG_2dTRTjAwTJkitlyTberzOBAOiDW8ljXetQ331bA0XjOqC75tY0EZDvTLMLA9_ssoeigc-SMNcBTPH9X3gVH8UYoHhYSMNqE815tNbuf3SjaORi2ids0pVP4PlF_ELPVrwXTqJ_qq_Sznm6AciyS=s16000" /></a></div><br /><br /><p></p><p>Drag & Drop (klik, tahan dan geser) gambar tandapanah hijau ke bagian kanan seperti dibawah :</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiZVQikTzBXrV4LB7I1aqqDp_q1Wn8RQAw6_hnode67qq9IvGaSV68NH_625yp56GUxWUkpqexCVAIC8E4SGklOv1NTsF3SawsNwTC5BYehYhjS5Kb6RoXmcoPjg43mci2deOXt1gXYKCe0VuMZ180-OtrbVAcL4BtxW7rWW-kuoPHDIUbPa17vW4R9" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="421" data-original-width="615" src="https://blogger.googleusercontent.com/img/a/AVvXsEiZVQikTzBXrV4LB7I1aqqDp_q1Wn8RQAw6_hnode67qq9IvGaSV68NH_625yp56GUxWUkpqexCVAIC8E4SGklOv1NTsF3SawsNwTC5BYehYhjS5Kb6RoXmcoPjg43mci2deOXt1gXYKCe0VuMZ180-OtrbVAcL4BtxW7rWW-kuoPHDIUbPa17vW4R9=s16000" /></a></div><br /><br /><p></p><p>Pilih juga gambar transformation/ pekerjaan yang akan dijalankan</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjY-JbdLjsnV8u-d7XWTbFcFCnER7vEJkVPU_1BmTUC7_ycl9GKY3JWpUaPs68yzLVnfsv49RUh_z9HWVNbEciFE3b0yA-7lDE9wzbAstaaPUQsmGY2tYwt2ky-eLsvjWoTvojdDD0NmJmq6KclYKqFc7eHlFgqTJy9ZRVL-Ne8a9H5OZmAbTAErNnC" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="388" data-original-width="704" src="https://blogger.googleusercontent.com/img/a/AVvXsEjY-JbdLjsnV8u-d7XWTbFcFCnER7vEJkVPU_1BmTUC7_ycl9GKY3JWpUaPs68yzLVnfsv49RUh_z9HWVNbEciFE3b0yA-7lDE9wzbAstaaPUQsmGY2tYwt2ky-eLsvjWoTvojdDD0NmJmq6KclYKqFc7eHlFgqTJy9ZRVL-Ne8a9H5OZmAbTAErNnC=s16000" /></a></div><br /><br /><p></p><p>Klik duakali pada transformation dan pilih transformation yang telah disimpan tadi dan klik oke</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgBwqrpEJ005B0AQOI3SVVg7rUxvyO9kXCkA7OkPLscP9ExtfB97LmWUXpNTk62Z7uFe91kXvF6IVgnB4r4Eef0O9b4HOdK1XgaZyCcChtxK0TV-o-6FS5NpZuMTCY9wHbvSv16fTjd6MgKBPfpcPflUI2eeZbTvFUwLkTvzATn3UiyQLhZXvphSs9n" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="498" data-original-width="1036" src="https://blogger.googleusercontent.com/img/a/AVvXsEgBwqrpEJ005B0AQOI3SVVg7rUxvyO9kXCkA7OkPLscP9ExtfB97LmWUXpNTk62Z7uFe91kXvF6IVgnB4r4Eef0O9b4HOdK1XgaZyCcChtxK0TV-o-6FS5NpZuMTCY9wHbvSv16fTjd6MgKBPfpcPflUI2eeZbTvFUwLkTvzATn3UiyQLhZXvphSs9n=s16000" /></a></div><br /><br /><p></p><p>kemudian hubungkan transformation dan jobs yang sudah dibuat</p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjY3xS0lqp0gtDjMpGpe4JT-yVtIvA5_0IYsTklV1d7ktutt1yv8yXtjh_mACyAAWwanNtexY5ivqBN6xx3cmoOUDNNpxdeQW-xeMgZtFYr7c2bHvrlouQeYeiB4yfK5DS57jE4IJa-oaovtDl-91jIpf1o51N1W2_ri-UUR0jfCFLXxsc3tHHKKl89" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="249" data-original-width="523" src="https://blogger.googleusercontent.com/img/a/AVvXsEjY3xS0lqp0gtDjMpGpe4JT-yVtIvA5_0IYsTklV1d7ktutt1yv8yXtjh_mACyAAWwanNtexY5ivqBN6xx3cmoOUDNNpxdeQW-xeMgZtFYr7c2bHvrlouQeYeiB4yfK5DS57jE4IJa-oaovtDl-91jIpf1o51N1W2_ri-UUR0jfCFLXxsc3tHHKKl89=s16000" /></a></div><br />Jika berhasil maka kurang lebih akan muncul tanda hijau seperti dibawah :<p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhT1eLn6VnISsjnRA3oVdzQx7I_fglCG83ni6TKPHSCrxxdZq3nMc_38G9p-AWz7N8juQ5Er-cXmtVA93kWK2dOAqcx6Jar58-zZVWUk2bSJyfQ3rfdPgxI76xigN_4ZIsjSC0g0vU3tptml5HvaA8WQdh37DHWFMPaa9Or_LqwN5RJ7JVe2F1rOD1d" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="629" data-original-width="846" src="https://blogger.googleusercontent.com/img/a/AVvXsEhT1eLn6VnISsjnRA3oVdzQx7I_fglCG83ni6TKPHSCrxxdZq3nMc_38G9p-AWz7N8juQ5Er-cXmtVA93kWK2dOAqcx6Jar58-zZVWUk2bSJyfQ3rfdPgxI76xigN_4ZIsjSC0g0vU3tptml5HvaA8WQdh37DHWFMPaa9Or_LqwN5RJ7JVe2F1rOD1d=s16000" /></a></div><br /><br /><p></p><p><br /></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-58806636990044115282023-03-29T08:37:00.008+07:002023-03-29T08:37:53.864+07:00Warning in ./libraries/plugin_interface.lib.php#551 count(): Parameter must be an array or an object that implements Countable<p> Error yang muncul di Export PHPMyadmin</p><p>PHP : php7.3</p><p>OS : ubuntu 20</p><p>Solusi :</p><p>1. Backup file:<br />/usr/share/phpmyadmin/libraries/plugin_interface.lib.php</p><p>2. Cari kode :</p><p>if ($options != null && count($options) > 0) {</p><p>jika tidak ada cari kode</p><p>if (! is_null($options) && count($options) > 0) {</p><p>replace kode itu pake kode :</p><p>if (! is_null($options) && count((array)$options) > 0) {</p><p>>>restart apache</p><p><br /></p><p><br /></p><p><a href="https://stackoverflow.com/questions/59143117/warning-in-libraries-plugin-interface-lib-php551-count-parameter-must-be-a" target="_blank">Sumber</a></p><p><br /></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-70363343572695753462022-11-10T15:16:00.003+07:002022-11-10T15:16:39.003+07:00Setting Permission Folder Upload ke Apache di Ubuntu<p> Caranya : </p><p>Cek user apache :</p><p></p><blockquote>ps -ef | grep apache</blockquote><p></p><p><br /></p><p>lihat di kolom paling kiri, itu adalah nama dari user apache </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo9PqO82xC6pxa9-8lN1IUshdaDchzCVsaOOu8y7Aml-1_TDhSWp54d5zsLRgaD5kFPSNbjaczUTCXLz6VGt6ZuSspXNJCXJjuUfvw3-vKBhoKCecmYAxN7FKrAu6N_O9c9ANm4bL8cc_ATgNTvqTFIeLARStxjEVCmO1Pnso0c-tEJnul9rCA7t5W/s632/1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="210" data-original-width="632" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgo9PqO82xC6pxa9-8lN1IUshdaDchzCVsaOOu8y7Aml-1_TDhSWp54d5zsLRgaD5kFPSNbjaczUTCXLz6VGt6ZuSspXNJCXJjuUfvw3-vKBhoKCecmYAxN7FKrAu6N_O9c9ANm4bL8cc_ATgNTvqTFIeLARStxjEVCmO1Pnso0c-tEJnul9rCA7t5W/s16000/1.png" /></a></div><br /><p><br /></p><p>.</p><p>kemudian rubah ownership folder yang digunakan buat upload misal kaya dibawah :</p><p>sudo chown <b><span style="color: #cc0000;">www-data:www-data</span></b> <b><span style="color: #6fa8dc;">/var/www/uploads</span></b></p><p>sudo chmod 755 <b><span style="color: #6fa8dc;">/var/www/uploads</span></b></p><p><br /></p><p>warna merah itu user apache, warna biru itu folder untuk upload file</p><p><br /></p><p><a href="https://superuser.com/questions/581194/setting-correct-permissions-for-uploading-files">Sumber</a></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-60547517078467529702022-06-10T00:09:00.002+07:002022-06-10T00:09:31.032+07:00Export Mysql ke CSV dengan PHP<p>1. Form yang akan di gunakan untuk penempatan tombol export</p><p>2. File Export. </p><p>.................................................</p><p>di dalam form :</p><p></p><blockquote><p><br /></p><div style="background-color: #272822; color: #f8f8f2; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><<span style="color: #f92672;">form</span> <span style="color: #a6e22e;">action</span>=<span style="color: #e6db74;">"</span><span style="color: #f92672;"><?php</span> <span style="color: #66d9ef;">echo</span> $base_url; <span style="color: #f92672;">?</span><span style="color: #f92672;">></span><span style="color: #e6db74;">extoexcel2.php"</span> <span style="color: #a6e22e;">method</span>=<span style="color: #e6db74;">'post'</span> <span style="color: #a6e22e;">id</span>=<span style="color: #e6db74;">'formsearch-exportformat'</span>></div></blockquote><div style="background-color: #272822; color: #f8f8f2; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"></div>.<div>::: <b>extoexcel2.php</b> adalah file proses untuk mengeksport mysql ke csv</div><div>tombol export di masukkan ke dalam form diatas</div><div><br /></div><div><div style="background-color: #272822; color: #f8f8f2; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><blockquote>Download File : <<span style="color: #f92672;">input</span> <span style="color: #a6e22e;">type</span>=<span style="color: #e6db74;">"submit"</span> <span style="color: #a6e22e;">name</span>=<span style="color: #e6db74;">"export"</span> <span style="color: #a6e22e;">value</span>=<span style="color: #e6db74;">"CSV Export"</span> <span style="color: #a6e22e;">class</span>=<span style="color: #e6db74;">"btn btn-success"</span> /></blockquote></div></div><div><br /></div><div>isi file extoexcel2.php seperti dibawah :</div><div><div style="background-color: #272822; color: #f8f8f2; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div><span style="color: #f92672;"></span></div><blockquote><div><span style="color: #f92672;"><?php</span></div><br /><div><span style="color: #f92672;">include_once</span> <span style="color: #e6db74;">"koneksi.php"</span>;</div><div><span style="color: #88846f;">// ====================================================================================</span></div><div>$c <span style="color: #f92672;">=</span> <span style="color: #66d9ef;">mysqli_query</span>($konek, <span style="color: #e6db74;">"select * from daftarkaryawan"</span>);</div><div><span style="color: #f92672;">if</span> (<span style="color: #66d9ef;">isset</span>($_POST[<span style="color: #e6db74;">'export'</span>])) {</div><br /><div> $delimiter <span style="color: #f92672;">=</span> <span style="color: #e6db74;">","</span>;</div><div> $filename <span style="color: #f92672;">=</span> <span style="color: #e6db74;">"exportdtkar_"</span> <span style="color: #f92672;">.</span> <span style="color: #66d9ef;">date</span>(<span style="color: #e6db74;">'Y-m-d'</span>) <span style="color: #f92672;">.</span> <span style="color: #e6db74;">".csv"</span>;</div><br /><div> <span style="color: #88846f;">//createfilepointer</span></div><div> $f <span style="color: #f92672;">=</span> <span style="color: #66d9ef;">fopen</span>(<span style="color: #e6db74;">'php://memory'</span>, <span style="color: #e6db74;">'w'</span>);</div><br /><div> <span style="color: #88846f;">//column headers:</span></div><div> $headers <span style="color: #f92672;">=</span> <span style="color: #66d9ef;">array</span>(</div><div> <span style="color: #e6db74;">'idkaryawan'</span>,</div><div> <span style="color: #e6db74;">'almat'</span>,</div><div> <span style="color: #e6db74;">'nohp'</span></div><br /><div> );</div><div> <span style="color: #66d9ef;">fputcsv</span>($f, $headers, $delimiter);</div><br /><div> <span style="color: #88846f;">//// Output each row of the data, format line as csv and write to file pointer </span></div><div> <span style="color: #f92672;">while</span> ($b <span style="color: #f92672;">=</span> <span style="color: #66d9ef;">mysqli_fetch_assoc</span>($c)) {</div><div> $idkar <span style="color: #f92672;">=</span> $b[<span style="color: #e6db74;">'idkaryawan'</span>];</div><div> $almt <span style="color: #f92672;">=</span> $b[<span style="color: #e6db74;">'alamat'</span>];</div><div> $nohp <span style="color: #f92672;">=</span> $b[<span style="color: #e6db74;">'nohp'</span>];</div><br /><br /><div> $linedata <span style="color: #f92672;">=</span> <span style="color: #66d9ef;">array</span>(</div><div> $idkar,</div><div> $almt,</div><div> $nohp</div><br /><div> );</div><div> <span style="color: #66d9ef;">fputcsv</span>($f, $linedata, $delimiter);</div><div> } <span style="color: #88846f;">//end of loop</span></div><br /><br /><div> <span style="color: #88846f;">// Move back to beginning of file </span></div><div> <span style="color: #66d9ef;">fseek</span>($f, <span style="color: #ae81ff;">0</span>);</div><br /><div> <span style="color: #88846f;">// // Set headers to download file rather than displayed </span></div><div> <span style="color: #66d9ef;">header</span>(<span style="color: #e6db74;">'Content-Type: text/csv'</span>);</div><div> <span style="color: #66d9ef;">header</span>(<span style="color: #e6db74;">'Content-Disposition: attachment; filename="'</span> <span style="color: #f92672;">.</span> $filename <span style="color: #f92672;">.</span> <span style="color: #e6db74;">'";'</span>);</div><br /><div> <span style="color: #88846f;">//output all remaining data on a file pointer </span></div><div> <span style="color: #66d9ef;">fpassthru</span>($f);</div><div> <span style="color: #88846f;">// exit;</span></div><div>}</div></blockquote><div></div><br /></div></div><div>.</div><div><br /></div><div><a href="https://www.codexworld.com/export-data-to-csv-file-using-php-mysql/">Referensi</a></div>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-18953655508889036842022-04-22T08:40:00.003+07:002022-06-24T12:14:24.500+07:00Konfigurasi Remote Mysql Ubuntu 18.04<p> Konfigurasi agar Mysql bisa di remote dari mesin lain, dalam hal ini contohnya mysql ada di cloud.</p><p>Konfigurasi File mysqld.cnf lokasinya di /etc/mysql/mysql.conf.d/mysqld.cnf</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH0xqE86fSU4RYJO5eYVMmiMBWki-9elWBKjMPGqvF8WB6-1S8oGDLZ_V1kgPs8-QEwcLHyl86Sz5wwYDEvfWlWhGRSLsH5yp9QL1Fx5I-BG4EX9TQA223PZqaITyu5dvFN5R_2AqwNiwHM_m9rfa4aAsx6bPFwaLkKhJeZ-imaeF3zlMOoXMj0onr/s715/1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="199" data-original-width="715" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH0xqE86fSU4RYJO5eYVMmiMBWki-9elWBKjMPGqvF8WB6-1S8oGDLZ_V1kgPs8-QEwcLHyl86Sz5wwYDEvfWlWhGRSLsH5yp9QL1Fx5I-BG4EX9TQA223PZqaITyu5dvFN5R_2AqwNiwHM_m9rfa4aAsx6bPFwaLkKhJeZ-imaeF3zlMOoXMj0onr/s16000/1.png" /></a></div><br /><p>didalam file ini rubah binding-address seperti berikut :</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnlyiNw_CUBprXUgwd1ryl_8PcZ_JUX-1TL-xQ3lu1Drvda9gy4Zlv7XskKkXIDFu1twWA7O6TuXtdsz3yDZeduZgNkmAgbXJKZ49qvuDAyZ0PhhUMdAL0xocW6SOJESOnXBGqMNAA6mVez2wv_-En3nvm1GoSW895EnkNeLCCngqIdUAvNiWhByKf/s903/cnf1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="303" data-original-width="903" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnlyiNw_CUBprXUgwd1ryl_8PcZ_JUX-1TL-xQ3lu1Drvda9gy4Zlv7XskKkXIDFu1twWA7O6TuXtdsz3yDZeduZgNkmAgbXJKZ49qvuDAyZ0PhhUMdAL0xocW6SOJESOnXBGqMNAA6mVez2wv_-En3nvm1GoSW895EnkNeLCCngqIdUAvNiWhByKf/s16000/cnf1.png" /></a></div><br /><p>dari sebelumnya bind-address= 127.0.0.1</p><p>menjadi bind-address= 0.0.0.0</p><p><br /></p><p>kemudian restart mysql, pastikan mysql ini bisa di restart</p><p><br /></p><p>Langkah selanjutnya membuka port mysql di ubuntu dengan perintah :</p><p>sudo ufw allow 3306/tcp</p><p><br /></p><p>menambah user di mysql :</p><p></p><blockquote><p>CREATE USER 'username'@'%' IDENTIFIED BY 'new-password';</p><p>FLUSH PRIVILEGES;</p></blockquote><p></p><p><br /></p><p>Memberi akses user ke spesifik database :</p><p></p><blockquote>GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'%';</blockquote><p></p><p><br /></p><p>Memberi akses user ke semua database :</p><p></p><blockquote>GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';</blockquote><p></p><p><br /></p><p><br /></p><p><a href="https://www.configserverfirewall.com/ubuntu-linux/mysql-allow-remote-connections/" target="_blank">referensi</a></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-84442185983864438942022-02-14T08:32:00.002+07:002022-02-14T08:32:50.802+07:00Memberi jarak input field dengan keyboard android Java<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhQqV2G6e26zfIt6VhlRGhPPJjx4twYBmmH2I1GXRE5vyPiTsikFEPZ-oM1vmkY80hocXZAcaZBsaVJsauITOEBWocvvPNXSScHHoxTFMZtqV15diIp-ykECjwy8eNPVLtdt4yU_5TkB5x27FZxFS3xv4qIXhZHUAtWnAfnsN23pG4r2h8lcIhsWYMb=s724" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="724" data-original-width="590" height="320" src="https://blogger.googleusercontent.com/img/a/AVvXsEhQqV2G6e26zfIt6VhlRGhPPJjx4twYBmmH2I1GXRE5vyPiTsikFEPZ-oM1vmkY80hocXZAcaZBsaVJsauITOEBWocvvPNXSScHHoxTFMZtqV15diIp-ykECjwy8eNPVLtdt4yU_5TkB5x27FZxFS3xv4qIXhZHUAtWnAfnsN23pG4r2h8lcIhsWYMb=s320" width="261" /></a></div><br /><p><br /></p><p><br /></p><p>Kasus :</p><p></p><ul style="text-align: left;"><li>Ketika field input di aktifkan android memunculkan keyboard yang defaultnya akan / bisa menutupi input field</li></ul><p></p><p>Cara untuk menggeser input atau memberi jarak ketika keyboard aktif : / jadi ketika keyboard android aktif kolom input akan secara otomatis bergeser ke atas atau ke area yang tidak tertutup oleh keyboard android,</p><p><br /></p><p>Caranya :</p><p><br /></p><p>1. Di dalam manifest di dalam aplication di beri text dibawah :</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #9876aa;">android</span><span style="color: #bababa;">:windowSoftInputMode</span><span style="color: #6a8759;">="stateVisible|adjustResize"</span></pre><p>2 Di dalam class activity yang akan di setting input text nya di dalam scope <b>onCreate</b> ,di beri syntax dibawah :</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><blockquote>getWindow().setSoftInputMode(WindowManager.LayoutParams.<span style="color: #9876aa; font-style: italic;">SOFT_INPUT_STATE_VISIBLE</span>|WindowManager.LayoutParams.<span style="color: #9876aa; font-style: italic;">SOFT_INPUT_ADJUST_RESIZE</span>)<span style="color: #cc7832;">;</span></blockquote><span style="color: #cc7832;"></span></pre><p><br /></p><p><br /></p><p><a href="https://stackoverflow.com/questions/1964789/move-layouts-up-when-soft-keyboard-is-shown">Sumber</a></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-83994384150876469892021-12-21T15:42:00.005+07:002021-12-21T15:42:42.362+07:00Set Margin Bawah halaman FPDF<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEizcpcHPKo58ahC2ESj2SZkqKPzS4wdX7PKb_6iat-PEBWn3MN8jEWKsq14LJ1dhYkjRhsVXmHtO5ekWno84InfjVjsWxQTGOZsyVWgKWCXD7nN65FqZfATyEFPeMsBlHRYbYLBpfP5oAG60Vk-eWm9fvAV5GxaueIaBBY7uBQKA2ygEVx_M7cd5Cqm=s873" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="612" data-original-width="873" src="https://blogger.googleusercontent.com/img/a/AVvXsEizcpcHPKo58ahC2ESj2SZkqKPzS4wdX7PKb_6iat-PEBWn3MN8jEWKsq14LJ1dhYkjRhsVXmHtO5ekWno84InfjVjsWxQTGOZsyVWgKWCXD7nN65FqZfATyEFPeMsBlHRYbYLBpfP5oAG60Vk-eWm9fvAV5GxaueIaBBY7uBQKA2ygEVx_M7cd5Cqm=s16000" /></a></div><br /> <p></p><p><br /></p><p>tinggal di beri syntax : <span style="color: #a4ceee; font-family: Consolas, "Courier New", monospace; font-size: 14px; font-style: italic; white-space: pre;">$pdf</span><span style="color: #00bff9; font-family: Consolas, "Courier New", monospace; font-size: 14px; font-style: italic; white-space: pre;">-></span><span style="color: #87aff4; font-family: Consolas, "Courier New", monospace; font-size: 14px; font-style: italic; white-space: pre;">SetAutoPageBreak</span><span style="background-color: #282822; color: #a7dbf7; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">(</span><span style="color: #92b6f4; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">true</span><span style="background-color: #282822; color: #a7dbf7; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">, </span><span style="color: #8dec95; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">30</span><span style="background-color: #282822; color: #a7dbf7; font-family: Consolas, "Courier New", monospace; font-size: 14px; white-space: pre;">);</span></p><p>misal jadi seperti dibawah :</p><div style="background-color: #282822; color: #a7dbf7; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div><span style="color: #00bff9; font-style: italic;">class</span> <span style="color: #d29ffc;">PDF</span> <span style="color: #00bff9; font-style: italic;">extends</span> <span style="color: #4fb4d8;">FPDF</span></div><div>{</div><div> <span style="color: #00bff9; font-style: italic;">function</span> <span style="color: #87aff4; font-style: italic;">Footer</span>()</div><div> {</div><div> <span style="color: #999999; font-style: italic;">//atur posisi 1.5 cm dari bawah</span></div><div> <span style="color: #00bff9; font-style: italic;">$this-></span><span style="color: #87aff4; font-style: italic;">SetY</span>(<span style="color: #00bff9; font-style: italic;">-</span><span style="color: #8dec95;">15</span>);</div><div> <span style="color: #999999; font-style: italic;">//buat garis horizontal</span></div><div> <span style="color: #00bff9; font-style: italic;">$this-></span><span style="color: #87aff4; font-style: italic;">Line</span>(<span style="color: #8dec95;">10</span>, <span style="color: #00bff9; font-style: italic;">$this-></span><span style="color: #87aff4; font-style: italic;">GetY</span>(), <span style="color: #8dec95;">200</span>, <span style="color: #00bff9; font-style: italic;">$this-></span><span style="color: #87aff4; font-style: italic;">GetY</span>());</div><div> <span style="color: #999999; font-style: italic;">//Arial italic 9</span></div><div> <span style="color: #00bff9; font-style: italic;">$this-></span><span style="color: #87aff4; font-style: italic;">SetFont</span>(<span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">Arial</span><span style="color: #6bff81;">'</span>, <span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">I</span><span style="color: #6bff81;">'</span>, <span style="color: #8dec95;">9</span>);</div><div> <span style="color: #999999; font-style: italic;">//nomor halaman</span></div><div> <span style="color: #00bff9; font-style: italic;">$this-></span><span style="color: #87aff4; font-style: italic;">Cell</span>(<span style="color: #8dec95;">0</span>, <span style="color: #8dec95;">10</span>, <span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">Halaman. </span><span style="color: #6bff81;">'</span> <span style="color: #00bff9; font-style: italic;">.</span> <span style="color: #00bff9; font-style: italic;">$this-></span><span style="color: #87aff4; font-style: italic;">PageNo</span>(), <span style="color: #8dec95;">0</span>, <span style="color: #8dec95;">0</span>, <span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">R</span><span style="color: #6bff81;">'</span>);</div><div> }</div><div> <span style="color: #999999; font-style: italic;">//-------------------------</span></div><div>}</div><div><span style="color: #a4ceee; font-style: italic;">$x</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #8dec95;">0</span>;</div><div><span style="color: #a4ceee; font-style: italic;">$y</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #8dec95;">0</span>;</div><div><span style="color: #a4ceee; font-style: italic;">$pdf</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #00bff9; font-style: italic;">new</span> <span style="color: #7fdbca;">PDF</span>(<span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">L</span><span style="color: #6bff81;">'</span>, <span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">mm</span><span style="color: #6bff81;">'</span>, <span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">A4</span><span style="color: #6bff81;">'</span>);</div><div><span style="color: #a4ceee; font-style: italic;">$pdf</span><span style="color: #00bff9; font-style: italic;">-></span><span style="color: #87aff4; font-style: italic;">SetMargins</span>(<span style="color: #8dec95;">27</span>, <span style="color: #8dec95;">20</span>, <span style="color: #8dec95;">30</span>, <span style="color: #8dec95;">30</span>);</div><div><span style="color: #a4ceee; font-style: italic;">$pdf</span><span style="color: #00bff9; font-style: italic;">-></span><span style="color: #87aff4; font-style: italic;">SetFont</span>(<span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">Times</span><span style="color: #6bff81;">'</span>, <span style="color: #6bff81;">''</span>, <span style="color: #8dec95;">12</span>);</div><div><span style="color: #a4ceee; font-style: italic;">$pdf</span><span style="color: #00bff9; font-style: italic;">-></span><span style="color: #87aff4; font-style: italic;">SetAutoPageBreak</span>(<span style="color: #92b6f4;">true</span>);</div><div><span style="color: #a4ceee; font-style: italic;">$pdf</span><span style="color: #00bff9; font-style: italic;">-></span><span style="color: #87aff4; font-style: italic;">SetAutoPageBreak</span>(<span style="color: #92b6f4;">true</span>, <span style="color: #8dec95;">30</span>);</div><br /><div><span style="color: #a4ceee; font-style: italic;">$pdf</span><span style="color: #00bff9; font-style: italic;">-></span><span style="color: #87aff4; font-style: italic;">AddPage</span>();</div></div><p>.</p><p><a href="https://ostack.cn/?qa=2085674/">referensi</a></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-83192051877042935132021-11-24T10:55:00.005+07:002021-11-24T10:55:58.667+07:00Send POST Webview Android Studio Java<p> </p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-V4gL4SllqLQ/YZ23QzTc-yI/AAAAAAAAD7k/Lb2NNKHJuH4Lbh6w0Y25tl8HmTUYpV1TACLcBGAsYHQ/s676/stack%2Bpostwebview.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="159" data-original-width="676" src="https://1.bp.blogspot.com/-V4gL4SllqLQ/YZ23QzTc-yI/AAAAAAAAD7k/Lb2NNKHJuH4Lbh6w0Y25tl8HmTUYpV1TACLcBGAsYHQ/s16000/stack%2Bpostwebview.png" /></a></div><br /><div>kode :</div><div><div style="background-color: #282822; color: #a7dbf7; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div><span style="color: #82aaff;">WebView</span> <span style="color: #82aaff;">webview</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #00bff9; font-style: italic;">new</span> <span style="color: #7fdbca;">WebView</span>(<span style="color: #82aaff;">this</span>);</div><div> <span style="color: #87aff4; font-style: italic;">setContentView</span>(<span style="color: #82aaff;">webview</span>);</div><br /><div> <span style="color: #00bff9; font-style: italic;">String</span> <span style="color: #82aaff;">url</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">http://www.example.com</span><span style="color: #6bff81;">"</span>;</div><br /><div> <span style="color: #00bff9; font-style: italic;">String</span> <span style="color: #82aaff;">postData</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">username=</span><span style="color: #6bff81;">"</span> <span style="color: #00bff9; font-style: italic;">+</span> <span style="color: #82aaff;">URLEncoder</span><span style="color: #00bff9; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">encode</span>(<span style="color: #82aaff;">my_username</span>, <span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">UTF-8</span><span style="color: #6bff81;">"</span>) <span style="color: #00bff9; font-style: italic;">+</span> <span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">&password=</span><span style="color: #6bff81;">"</span> <span style="color: #00bff9; font-style: italic;">+</span> <span style="color: #82aaff;">URLEncoder</span><span style="color: #00bff9; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">encode</span>(<span style="color: #82aaff;">my_password</span>, <span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">UTF-8</span><span style="color: #6bff81;">"</span>);</div><div> <span style="color: #82aaff;">webview</span><span style="color: #00bff9; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">postUrl</span>(<span style="color: #82aaff;">url</span>,<span style="color: #82aaff;">postData</span><span style="color: #00bff9; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">getBytes</span>());</div></div></div><div>.</div><div><a href="https://stackoverflow.com/questions/39506246/how-to-post-data-for-webview-android">Referensi</a></div>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-32278193850088930262021-11-09T09:03:00.004+07:002021-11-09T09:06:28.827+07:00Android Studio : Custom Alert dengan Layout xml<p>Custom Alert di Android Studio :</p><p>Pertama buat desain alertnya di klik kanan di layout > new > layout resource file</p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-a3Eqr8fiUxs/YYnU3tDrIQI/AAAAAAAAD6I/HCJ-oKHbw-M9IhEldo3fjWHrQ8FRJuwxACLcBGAsYHQ/s665/new%2Blayout1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="534" data-original-width="665" src="https://1.bp.blogspot.com/-a3Eqr8fiUxs/YYnU3tDrIQI/AAAAAAAAD6I/HCJ-oKHbw-M9IhEldo3fjWHrQ8FRJuwxACLcBGAsYHQ/s16000/new%2Blayout1.png" /></a></div><br /><p><br /></p><p>Kemudian buat desain seperti dibawah</p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-wTgdnf2V9EU/YYnVKXdAJ-I/AAAAAAAAD6Q/sUN1WTv0EB0w76d3NveJFvrJNQkRlVgNACLcBGAsYHQ/s570/desain1.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="570" data-original-width="403" src="https://1.bp.blogspot.com/-wTgdnf2V9EU/YYnVKXdAJ-I/AAAAAAAAD6Q/sUN1WTv0EB0w76d3NveJFvrJNQkRlVgNACLcBGAsYHQ/s16000/desain1.png" /></a></div><br /><p><br /></p><p>Kode dari desain diatas :</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #e8bf6a;"><?</span><span style="color: #bababa;">xml version</span><span style="color: #6a8759;">="1.0" </span><span style="color: #bababa;">encoding</span><span style="color: #6a8759;">="utf-8"</span><span style="color: #e8bf6a;">?><br /></span><span style="color: #e8bf6a;"><androidx.constraintlayout.widget.ConstraintLayout </span><span style="color: #bababa;">xmlns:</span><span style="color: #9876aa;">android</span><span style="color: #6a8759;">="http://schemas.android.com/apk/res/android"<br /></span><span style="color: #6a8759;"> </span><span style="color: #bababa;">xmlns:</span><span style="color: #9876aa;">tools</span><span style="color: #6a8759;">="http://schemas.android.com/tools"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="350dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #bababa;">xmlns:</span><span style="color: #9876aa;">app</span><span style="color: #6a8759;">="http://schemas.android.com/apk/res-auto"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_gravity</span><span style="color: #6a8759;">="center"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:padding</span><span style="color: #6a8759;">="4dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:background</span><span style="color: #6a8759;">="@drawable/bgborderred_blue"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="wrap_content"</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <androidx.cardview.widget.CardView<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="match_parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="match_parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:cardCornerRadius</span><span style="color: #6a8759;">="20dp"</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <androidx.constraintlayout.widget.ConstraintLayout<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="match_parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="match_parent"</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"><br /></span><span style="color: #e8bf6a;"> <Button<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:id</span><span style="color: #6a8759;">="@+id/closecustomalert"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="50dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="50dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_marginStart</span><span style="color: #6a8759;">="290dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_marginLeft</span><span style="color: #6a8759;">="290dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:background</span><span style="color: #6a8759;">="@drawable/closeiconblue"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:gravity</span><span style="color: #6a8759;">="right"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintBottom_toBottomOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintEnd_toEndOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintHorizontal_bias</span><span style="color: #6a8759;">="1.0"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintStart_toStartOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintTop_toTopOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintVertical_bias</span><span style="color: #6a8759;">="0.0" </span><span style="color: #e8bf6a;">/><br /></span><span style="color: #e8bf6a;"><br /></span><span style="color: #e8bf6a;"> <TextView<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:id</span><span style="color: #6a8759;">="@+id/textView"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="wrap_content"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="wrap_content"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:textSize</span><span style="color: #6a8759;">="20dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:textStyle</span><span style="color: #6a8759;">="bold"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:textColor</span><span style="color: #6a8759;">="@color/defaultblue"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:text</span><span style="color: #6a8759;">="Data Berhasil Tersimpan"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintBottom_toBottomOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintEnd_toEndOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintHorizontal_bias</span><span style="color: #6a8759;">="0.502"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintStart_toStartOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintTop_toTopOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintVertical_bias</span><span style="color: #6a8759;">="0.098" </span><span style="color: #e8bf6a;">/><br /></span><span style="color: #e8bf6a;"><br /></span><span style="color: #e8bf6a;"> <ImageView<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:id</span><span style="color: #6a8759;">="@+id/imageView"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="190dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="230dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintBottom_toBottomOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintEnd_toEndOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintStart_toStartOf</span><span style="color: #6a8759;">="parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintTop_toBottomOf</span><span style="color: #6a8759;">="@+id/textView"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:layout_constraintVertical_bias</span><span style="color: #6a8759;">="0.211"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">app</span><span style="color: #bababa;">:srcCompat</span><span style="color: #6a8759;">="@drawable/blue_checklisticon"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">tools</span><span style="color: #bababa;">:ignore</span><span style="color: #6a8759;">="VectorDrawableCompat" </span><span style="color: #e8bf6a;">/><br /></span><span style="color: #e8bf6a;"> </androidx.constraintlayout.widget.ConstraintLayout><br /></span><span style="color: #e8bf6a;"> </androidx.cardview.widget.CardView><br /></span><span style="color: #e8bf6a;"></androidx.constraintlayout.widget.ConstraintLayout></span></pre><p><br /></p><p>Pembuatan desain selesai,</p><p><br /></p><p>Selanjutnya membuat prosedur untuk memanggil alert yang telah dibuat :</p><p>di Class yang akan menampilkan alert di dalam class buat variabel dialog :</p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-DVbl_xzWmQ4/YYnXezUVi6I/AAAAAAAAD6w/JnKuX7vqhtw1vgxPWsxZk4-Vglm9MqoewCLcBGAsYHQ/s475/deklarasi2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="143" data-original-width="475" src="https://1.bp.blogspot.com/-DVbl_xzWmQ4/YYnXezUVi6I/AAAAAAAAD6w/JnKuX7vqhtw1vgxPWsxZk4-Vglm9MqoewCLcBGAsYHQ/s16000/deklarasi2.png" /></a></div><br /><p><br /></p><p>.di <b>dalam class</b> tapi <b>di luar oncreate </b>buat prosedur seperti dibawah</p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-AfpAVcZiqUM/YYnWcWp1j0I/AAAAAAAAD6o/gTOyLwmcum4fEImrxvTl97-Md6qfboXqQCLcBGAsYHQ/s735/code2.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="247" data-original-width="735" src="https://1.bp.blogspot.com/-AfpAVcZiqUM/YYnWcWp1j0I/AAAAAAAAD6o/gTOyLwmcum4fEImrxvTl97-Md6qfboXqQCLcBGAsYHQ/s16000/code2.png" /></a></div><br /><p>.</p><p>untuk memanggil alert panggil prosedur <span style="color: #990000; font-family: verdana;"><span style="background-color: white;">dialogtersimpan()</span></span> dari dalam Oncreate atau di panggil dari button onclick</p><p><br /></p><p><a href="https://www.youtube.com/watch?v=5PaWtQAOdi8">referensi</a></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-64436764820026909052021-10-31T23:01:00.007+07:002021-10-31T23:01:52.954+07:00Android Studio Java : Resize Bitmap Capture and Encode to base64 Image<p>Caranya dengan menggunakan function / method :</p><p>function untuk meresize :</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;"><span style="color: #cc7832;">public static </span>Bitmap <span style="color: #ffc66d;">scaleBitmap</span>(Bitmap bitmap<span style="color: #cc7832;">, int </span>wantedWidth<span style="color: #cc7832;">, int </span>wantedHeight) {<br /> Bitmap output = Bitmap.<span style="font-style: italic;">createBitmap</span>(wantedWidth<span style="color: #cc7832;">, </span>wantedHeight<span style="color: #cc7832;">, </span>Bitmap.Config.<span style="color: #9876aa; font-style: italic;">ARGB_8888</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>Canvas canvas = <span style="color: #cc7832;">new </span>Canvas(output)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>Matrix m = <span style="color: #cc7832;">new </span>Matrix()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>m.setScale((<span style="color: #cc7832;">float</span>) wantedWidth / bitmap.getWidth()<span style="color: #cc7832;">, </span>(<span style="color: #cc7832;">float</span>) wantedHeight / bitmap.getHeight())<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>canvas.drawBitmap(bitmap<span style="color: #cc7832;">, </span>m<span style="color: #cc7832;">, new </span>Paint())<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> return </span>output<span style="color: #cc7832;">;<br /></span>}</pre><p><br /></p><p>function untuk mendecode Bitmap :</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;"><span style="color: #cc7832;">private </span>String <span style="color: #ffc66d;">encodeImage64</span>(Bitmap bm)<br />{<br /> ByteArrayOutputStream baos = <span style="color: #cc7832;">new </span>ByteArrayOutputStream()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>bm.compress(Bitmap.CompressFormat.<span style="color: #9876aa; font-style: italic;">JPEG</span><span style="color: #cc7832;">,</span><span style="color: #6897bb;">100</span><span style="color: #cc7832;">,</span>baos)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> byte</span>[] b = baos.toByteArray()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>String encImage = Base64.<span style="font-style: italic;">encodeToString</span>(b<span style="color: #cc7832;">, </span>Base64.<span style="color: #9876aa; font-style: italic;">DEFAULT</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> return </span>encImage<span style="color: #cc7832;">;<br /></span>}</pre><p><br /></p><p>Contoh Penggunaan :</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;">Bitmap fotokk=BitmapFactory.<span style="font-style: italic;">decodeFile</span>(<span style="color: #9876aa;">curentPhotopathfotokk</span>)<span style="color: #cc7832;">;<br /></span>Bitmap imgresizekk=<span style="font-style: italic;">scaleBitmap</span>(fotokk<span style="color: #cc7832;">, </span><span style="color: #6897bb;">800</span><span style="color: #cc7832;">, </span><span style="color: #6897bb;">400</span>)<span style="color: #cc7832;">;<br /></span>String convertfotokk=encodeImage64(imgresizekk)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span></pre><p>.</p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-67613001251448761812021-10-31T22:56:00.003+07:002021-10-31T23:03:23.499+07:00Android Studio Camera Capture dengan Kualitas gambar Asli<p> Aplikasi untuk mendapatkan / capture kamera android Studio</p><p>di AndroidManifest.xml di tambahkan :</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #e8bf6a;"><uses-permission </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:name</span><span style="color: #6a8759;">="android.permission.READ_EXTERNAL_STORAGE"</span><span style="color: #e8bf6a;">/><br /></span><span style="color: #e8bf6a;"><uses-permission </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:name</span><span style="color: #6a8759;">="android.permission.WRITE_EXTERNAL_STORAGE"</span><span style="color: #e8bf6a;">/><br /></span><span style="color: #e8bf6a;"><uses-permission </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:name</span><span style="color: #6a8759;">="android.permission.CAMERA" </span><span style="color: #e8bf6a;">/><br /></span><span style="color: #e8bf6a;"><uses-feature </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:name</span><span style="color: #6a8759;">="android.hardware.camera2" </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:required</span><span style="color: #6a8759;">="true"</span><span style="color: #e8bf6a;">/></span></pre><p>di bawah tag penutup </activity> tambahkan kode berikut</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #e8bf6a;"><provider<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:name</span><span style="color: #6a8759;">="androidx.core.content.FileProvider"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:authorities</span><span style="color: #6a8759;">="com.namaproject.nsgo_r11103.fileprovider"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:exported</span><span style="color: #6a8759;">="false"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:grantUriPermissions</span><span style="color: #6a8759;">="true"</span><span style="color: #e8bf6a;">><br /></span><span style="color: #e8bf6a;"> <meta-data<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:name</span><span style="color: #6a8759;">="android.support.FILE_PROVIDER_PATHS"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:resource</span><span style="color: #6a8759;">="@xml/file_paths"</span><span style="color: #e8bf6a;">></meta-data><br /></span><span style="color: #e8bf6a;"></provider></span></pre><div><br /></div><div>perhatikan kode <span style="color: #9876aa; font-family: Consolas, monospace; font-size: 8.3pt;">android</span><span style="color: #bababa; font-family: Consolas, monospace; font-size: 8.3pt;">:authorities</span><span style="color: #6a8759; font-family: Consolas, monospace; font-size: 8.3pt;">="com.namaproject.nsgo_r11103.fileprovider"</span>,kode string ini akan digunakan di dalam class, klik alt+ender di string <span style="background-color: #2b2b2b; color: #6a8759; font-family: Consolas, monospace; font-size: 8.3pt;">"@xml/file_paths"</span>, atau di folter res buat <b>Directory</b> dengan <b>nama directory <span style="color: red;">xml</span></b> dan tambahkan file <b>dengan namafile <span style="color: red;">file_paths.xml</span></b> dan isikan kode berikut :</div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;"><span style="color: #e8bf6a;"><?</span><span style="color: #bababa;">xml version</span><span style="color: #6a8759;">="1.0" </span><span style="color: #bababa;">encoding</span><span style="color: #6a8759;">="utf-8"</span><span style="color: #e8bf6a;">?><br /></span><span style="color: #e8bf6a;"><paths><br /></span><span style="color: #e8bf6a;"> <external-path </span><span style="color: #bababa;">name</span><span style="color: #6a8759;">="my_images" </span><span style="color: #bababa;">path</span><span style="color: #6a8759;">="Android/data/com.namaproject.nsgo_r11103/files/Pictures" </span><span style="color: #e8bf6a;">/><br /></span><span style="color: #e8bf6a;"></paths></span></pre></div><div><br /></div><div>misalkan di XML kita buat :</div><div>1.tombol untuk membuka kamera</div><div>2.space untuk preview hasil kamera :</div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;"><span style="color: #e8bf6a;"><Button<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="match_parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:text</span><span style="color: #6a8759;">="Foto Kartu Keluarga"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:textAllCaps</span><span style="color: #6a8759;">="false"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:id</span><span style="color: #6a8759;">="@+id/getfotokk"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:background</span><span style="color: #6a8759;">="@drawable/btn_green2"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="wrap_content"</span><span style="color: #e8bf6a;">/><br /></span><span style="color: #e8bf6a;"><ImageView<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="match_parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:id</span><span style="color: #6a8759;">="@+id/spacefotokk"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:background</span><span style="color: #6a8759;">="@color/white"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="200dp"</span><span style="color: #e8bf6a;">/></span></pre></div><div><br /></div><div><br /></div><div>Sekarang ke file class yang di class yagng akan di set kamera :</div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;">Button <span style="color: #9876aa;">getfotokk</span><span style="color: #cc7832;">;</span></pre></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;">ImageView <span style="color: #9876aa;">spacefotokk</span><span style="color: #cc7832;">;</span></pre></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;"><span style="color: grey;">/*foto kk */<br /></span><span style="color: #9876aa;">getfotokknas</span>.setOnClickListener(<span style="color: #cc7832;">new </span>View.OnClickListener() {<br /> <span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">onClick</span>(View v) {<br /><br /> String filenamefotokk=<span style="color: #6a8759;">"fotokk"</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>File storageDirectory=getExternalFilesDir(Environment.<span style="color: #9876aa; font-style: italic;">DIRECTORY_PICTURES</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> try </span>{<br /> File imageFilekk=File.<span style="font-style: italic;">createTempFile</span>(filenamefotokk<span style="color: #cc7832;">,</span><span style="color: #6a8759;">"jpg"</span><span style="color: #cc7832;">,</span>storageDirectory)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span><span style="color: #9876aa;">curentPhotopathfotokk</span>=imageFilekk.getAbsolutePath()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>Uri imageUlfotokk=FileProvider.<span style="font-style: italic;">getUriForFile</span>(global_fapbaru.<span style="color: #cc7832;">this,<br /></span><span style="color: #cc7832;"> </span><span style="color: #6a8759;">"com.namaproject.nsgo_r11103.fileprovider"</span><span style="color: #cc7832;">,</span>imageFilekk)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>Intent intentfotokk=<span style="color: #cc7832;">new </span>Intent(MediaStore.<span style="color: #9876aa; font-style: italic;">ACTION_IMAGE_CAPTURE</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>intentfotokk.putExtra(MediaStore.<span style="color: #9876aa; font-style: italic;">EXTRA_OUTPUT</span><span style="color: #cc7832;">,</span>imageUlfotokk)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>startActivityForResult(intentfotokk<span style="color: #cc7832;">,</span><span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>} <span style="color: #cc7832;">catch </span>(IOException e) {<br /> e.printStackTrace()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>Toast.<span style="font-style: italic;">makeText</span>(getApplicationContext()<span style="color: #cc7832;">,</span>e.toString()<span style="color: #cc7832;">,</span>Toast.<span style="color: #9876aa; font-style: italic;">LENGTH_SHORT</span>).show()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /> }<br />})<span style="color: #cc7832;">;<br /></span><span style="color: grey;">/*foto kk */</span></pre></div><div>note : di dalam syntax <span style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;">Uri imageUlfotokk=FileProvider.</span><span style="color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt; font-style: italic;">getUriForFile</span><span style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;">(global_fapbaru.</span><span style="color: #cc7832; font-family: Consolas, monospace; font-size: 8.3pt;">this,</span></div><div><span style="color: #cc7832; font-family: Consolas, monospace; font-size: 8.3pt;"> </span><span style="color: #6a8759; font-family: Consolas, monospace; font-size: 8.3pt;">"com.nusumma.nsgo_r11103.fileprovider"</span><span style="color: #cc7832; font-family: Consolas, monospace; font-size: 8.3pt;">,</span><span style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;">imageFilekk)</span><span style="color: #cc7832; font-family: Consolas, monospace; font-size: 8.3pt;">;</span> string ini harus sama dengan yang ada di AndroidManifest.xml di bagian <span style="color: #9876aa; font-family: Consolas, monospace; font-size: 8.3pt;">android</span><span style="color: #bababa; font-family: Consolas, monospace; font-size: 8.3pt;">:authorities</span>.</div><div><br /></div><div>untuk menampilkan preview :</div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;"><span style="color: #bbb529;">@Override<br /></span><span style="color: #cc7832;">protected void </span><span style="color: #ffc66d;">onActivityResult</span>(<span style="color: #cc7832;">int </span>requestCode<span style="color: #cc7832;">, int </span>resultCode<span style="color: #cc7832;">, </span><span style="color: #bbb529;">@Nullable </span>Intent data) {<br /> <span style="color: #cc7832;">super</span>.onActivityResult(requestCode<span style="color: #cc7832;">, </span>resultCode<span style="color: #cc7832;">, </span>data)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> if </span>(requestCode==<span style="color: #6897bb;">1 </span>&& resultCode==<span style="color: #9876aa; font-style: italic;">RESULT_OK</span>){<br /> Bitmap fotokk=BitmapFactory.<span style="font-style: italic;">decodeFile</span>(<span style="color: #9876aa;">curentPhotopathfotokk</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>spacefotokk<span style="font-size: 8.3pt;">.setImageBitmap(fotokk)</span><span style="color: #cc7832; font-size: 8.3pt;">;<br /></span> }<br />}</pre></div><div><br /></div><div><br /></div><div>jika Image capure lebih dari 1 :</div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;"><span style="color: #bbb529;">@Override<br /></span><span style="color: #cc7832;">protected void </span><span style="color: #ffc66d;">onActivityResult</span>(<span style="color: #cc7832;">int </span>requestCode<span style="color: #cc7832;">, int </span>resultCode<span style="color: #cc7832;">, </span><span style="color: #bbb529;">@Nullable </span>Intent data) {<br /> <span style="color: #cc7832;">super</span>.onActivityResult(requestCode<span style="color: #cc7832;">, </span>resultCode<span style="color: #cc7832;">, </span>data)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> if </span>(requestCode==<span style="color: #6897bb;">1 </span>&& resultCode==<span style="color: #9876aa; font-style: italic;">RESULT_OK</span>){<br /> <span style="color: grey;">//ukuran sebenarnya foto <br /></span><span style="color: grey;"> </span>Bitmap bitmap=BitmapFactory.<span style="font-style: italic;">decodeFile</span>(<span style="color: #9876aa;">curentPhotopathfotoktp</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> if</span>(bitmap!=<span style="color: #cc7832;">null</span>){<br /> <span style="color: #9876aa;">spacefotoktp</span>.setImageBitmap(bitmap)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>}<br /> Bitmap fotoktppasangan=BitmapFactory.<span style="font-style: italic;">decodeFile</span>(<span style="color: #9876aa;">curentPhotopathfotoktppasangan</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> if</span>(fotoktppasangan!=<span style="color: #cc7832;">null</span>){<br /> <span style="color: #9876aa;">spacefotoktppasangan</span>.setImageBitmap(fotoktppasangan)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>}<br /> Bitmap fotokk=BitmapFactory.<span style="font-style: italic;">decodeFile</span>(<span style="color: #9876aa;">curentPhotopathfotokk</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> if </span>(fotokk!=<span style="color: #cc7832;">null</span>){<br /> <span style="color: #9876aa;">spacefotokknas</span>.setImageBitmap(fotokk)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;"> </span>}<br /><br /><br /> }<br />}</pre></div><div><br /></div>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-37757132619881374022021-10-31T22:23:00.007+07:002021-10-31T22:26:32.787+07:00Date Picker Android Studio<p> Jika di web developper date picker bisa dibuat ketika klik di input field dengan tag :</p><p><input type='date'> atau dengan bootstrap,</p><p>di android date picker di klik dengan membuat button, kemudian hasil date di isikan ke sebuah EditText</p><p>Contoh XML Button :</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #e8bf6a;"><Button<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="match_parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:text</span><span style="color: #6a8759;">="Pilih Tanggal lahir"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:textAllCaps</span><span style="color: #6a8759;">="false"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:id</span><span style="color: #6a8759;">="@+id/btnpilihtgllahir"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="wrap_content"</span><span style="color: #e8bf6a;">/></span></pre><p><br /></p><p>Contoh Edit Text :</p><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #e8bf6a;"><EditText<br /></span><span style="color: #e8bf6a;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_width</span><span style="color: #6a8759;">="match_parent"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:padding</span><span style="color: #6a8759;">="10dp"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:id</span><span style="color: #6a8759;">="@+id/txtgllahir"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:hint</span><span style="color: #6a8759;">="Tempat Lahir"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:background</span><span style="color: #6a8759;">="@drawable/input_warna1"<br /></span><span style="color: #6a8759;"> </span><span style="color: #9876aa;">android</span><span style="color: #bababa;">:layout_height</span><span style="color: #6a8759;">="wrap_content"</span><span style="color: #e8bf6a;">/></span></pre><p>.</p><p>Buat Class dengan Nama DatePickerFragment, dan isikan text :</p><p><br />
</p><div class="textarea"><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>android.app.DatePickerDialog<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>android.app.Dialog<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>android.os.Bundle<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;">import </span>android.widget.DatePicker<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>androidx.fragment.app.DialogFragment<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">import </span>java.util.Calendar<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"><br /></span><span style="color: #cc7832;">public class </span>DatePickerFragment <span style="color: #cc7832;">extends </span>DialogFragment {<br /> <span style="color: #cc7832;">private </span>onDateClickListener <span style="color: #9876aa;">onDateClickListener</span><span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span><span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public </span>Dialog <span style="color: #ffc66d;">onCreateDialog</span>(Bundle savedInstanceState){<br /> <span style="color: #cc7832;">final </span>Calendar calendar = Calendar.<span style="font-style: italic;">getInstance</span>()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> int </span>tahun = calendar.get(Calendar.<span style="color: #9876aa; font-style: italic;">YEAR</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> int </span>bulan = calendar.get(Calendar.<span style="color: #9876aa; font-style: italic;">MONTH</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> int </span>hari = calendar.get(Calendar.<span style="color: #9876aa; font-style: italic;">DAY_OF_MONTH</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> return new </span>DatePickerDialog(getActivity()<span style="color: #cc7832;">, new </span>DatePickerDialog.OnDateSetListener() {<br /> <span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">onDateSet</span>(DatePicker datePicker<span style="color: #cc7832;">, int </span>i<span style="color: #cc7832;">, int </span>i1<span style="color: #cc7832;">, int </span>i2) {<br /> <span style="color: #9876aa;">onDateClickListener</span>.onDateSet(datePicker<span style="color: #cc7832;">, </span>i<span style="color: #cc7832;">, </span>i1<span style="color: #cc7832;">, </span>i2)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /> }<span style="color: #cc7832;">, </span>tahun<span style="color: #cc7832;">, </span>bulan<span style="color: #cc7832;">, </span>hari)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /> <span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">setOnDateClickListener</span>(onDateClickListener onDateClickListener){<br /> <span style="color: #cc7832;">if </span>(onDateClickListener != <span style="color: #cc7832;">null</span>){<br /> <span style="color: #cc7832;">this</span>.<span style="color: #9876aa;">onDateClickListener</span>= onDateClickListener<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /> }<br /> <span style="color: #cc7832;">public interface </span>onDateClickListener{<br /> <span style="color: #cc7832;">void </span><span style="color: #ffc66d;">onDateSet</span>(DatePicker datePicker<span style="color: #cc7832;">, int </span>i<span style="color: #cc7832;">, int </span>i1<span style="color: #cc7832;">, int </span>i2)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br />}<br /><br /></pre></div><p></p><div><br /></div><div>misalkan disini akan menampilkan date picker untuk tanggal lahir, di class yang akan di menampilkan tanggal lahir, misal main activity atau class lainya buat method berikut</div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">tgl_lahir</span>(){<br /> DatePickerFragment datePickerFragment = <span style="color: #cc7832;">new </span>DatePickerFragment()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>datePickerFragment.show(getSupportFragmentManager()<span style="color: #cc7832;">, </span><span style="color: #6a8759;">"data"</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>datePickerFragment.setOnDateClickListener(<span style="color: #cc7832;">new </span>DatePickerFragment.onDateClickListener() {<br /> <span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">onDateSet</span>(DatePicker datePicker<span style="color: #cc7832;">, int </span>i<span style="color: #cc7832;">, int </span>i1<span style="color: #cc7832;">, int </span>i2) {<br /> String tahun =<span style="color: #6a8759;">""</span>+datePicker.getYear()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>String bulan = <span style="color: #6a8759;">""</span>+(datePicker.getMonth()+<span style="color: #6897bb;">1</span>)<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>String hari = <span style="color: #6a8759;">""</span>+datePicker.getDayOfMonth()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>String tglahir=tahun+<span style="color: #6a8759;">"/"</span>+bulan+<span style="color: #6a8759;">"/"</span>+hari<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>Toast.<span style="font-style: italic;">makeText</span>(getApplicationContext()<span style="color: #cc7832;">,</span>tglahir.toString()<span style="color: #cc7832;">,</span>Toast.<span style="color: #9876aa; font-style: italic;">LENGTH_SHORT</span>).show()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br /> })<span style="color: #cc7832;">;<br /></span>}</pre></div><div>.</div><div><br /></div><div>Selanjutnya panggil tombol klik date picker :</div><div><br /></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Consolas',monospace; font-size: 8.3pt;">Button <span style="color: #9876aa;">btnpilihtgllahir</span><span style="color: #cc7832;">;</span></pre></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #9876aa;">btnpilihtgllahir</span>=findViewById(R.id.<span style="color: #9876aa; font-style: italic;">btnpilihtgllahir</span>)<span style="color: #cc7832;">;</span></pre></div><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: Consolas, monospace; font-size: 8.3pt;"><span style="color: #9876aa;">btnpilihtgllahir</span>.setOnClickListener(<span style="color: #cc7832;">new </span>View.OnClickListener() {<br /> <span style="color: #bbb529;">@Override<br /></span><span style="color: #bbb529;"> </span><span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">onClick</span>(View v) {<br /> tgl_lahir()<span style="color: #cc7832;">;<br /></span><span style="color: #cc7832;"> </span>}<br />})<span style="color: #cc7832;">;</span></pre></div><div>.</div><div><br /></div><div><a href="https://codingrakitan.blogspot.com/2020/03/cara-membuat-date-picker-di-android.html" target="_blank">Referensi</a></div>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-18024191838279315722021-10-18T09:15:00.000+07:002021-10-18T09:15:00.454+07:00Konversi Image ke Base64 & Resize Gambar yang di Upload front End HTML + Javascript<p>Sederhananya :</p><p>1. buat 2 input :</p><div style="background-color: #282822; color: #a7dbf7; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div><span style="color: white;"><</span><span style="color: #6dbdfa;">input</span> <span style="color: #f7ecb5; font-style: italic;">type</span>=<span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">file</span><span style="color: #6bff81;">"</span> <span style="color: #f7ecb5; font-style: italic;">class</span>=<span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">form-control</span><span style="color: #6bff81;">'</span> <span style="color: #f7ecb5; font-style: italic;">onchange</span>=<span style="color: #6bff81;">"</span><span style="color: #87aff4; font-style: italic;">onfile_uploadkelengkapan0</span><span style="color: #bcf0c0;">()</span><span style="color: #6bff81;">"</span> <span style="color: #f7ecb5; font-style: italic;">id</span>=<span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">file_uploadkelengkapan0</span><span style="color: #6bff81;">'</span><span style="color: white;">></span></div><div> <span style="color: white;"><</span><span style="color: #6dbdfa;">input</span> <span style="color: #f7ecb5; font-style: italic;">type</span>=<span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">hidden</span><span style="color: #6bff81;">"</span> <span style="color: #f7ecb5; font-style: italic;">name</span>=<span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">file_uploadkelengkapan</span><span style="color: #6bff81;">'</span> <span style="color: #f7ecb5; font-style: italic;">id</span>=<span style="color: #6bff81;">'</span><span style="color: #bcf0c0;">file_uploadkelengkapan</span><span style="color: #6bff81;">'</span><span style="color: white;">></span></div></div><p><br /></p><p>untuk input yang pertama digunakan untuk menampung gambar yang telah di upload</p><p>field input yang ke dua untuk menampung file yang jadi base 64 dan telah di resize</p><p><br /></p><p>2. Selanjutnya bikin javascript :</p><div style="background-color: #282822; color: #a7dbf7; font-family: Consolas, "Courier New", monospace; font-size: 14px; line-height: 19px; white-space: pre;"><div><span style="color: #00bff9; font-style: italic;">var</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #87aff4; font-style: italic;">onfile_uploadkelengkapan0</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">function</span><span style="color: #c792ea; font-style: italic;"> () </span><span style="color: white; font-style: italic;">{</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">var</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d7dbe0;">uploadImage</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d6deeb; font-style: italic;">document</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">getElementById</span><span style="color: #c792ea; font-style: italic;">(</span><span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">file_uploadkelengkapan0</span><span style="color: #6bff81;">"</span><span style="color: #c792ea; font-style: italic;">);</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #999999; font-style: italic;">//check and retuns the length of uploded file.</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">if</span><span style="color: #c792ea; font-style: italic;"> (</span><span style="color: #d6deeb; font-style: italic;">uploadImage</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #f7ecb5; font-style: italic;">files</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #7fdbca; font-style: italic;">length</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">===</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #8dec95; font-style: italic;">0</span><span style="color: #c792ea; font-style: italic;">) </span><span style="color: white; font-style: italic;">{</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">return</span><span style="color: #c792ea; font-style: italic;">;</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: white; font-style: italic;">}</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #999999; font-style: italic;">//Is Used for validate a valid file.</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">var</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d7dbe0;">uploadFile</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d6deeb; font-style: italic;">document</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">getElementById</span><span style="color: #c792ea; font-style: italic;">(</span><span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">file_uploadkelengkapan0</span><span style="color: #6bff81;">"</span><span style="color: #c792ea; font-style: italic;">).</span><span style="color: #7fdbca; font-style: italic;">files</span><span style="color: #c792ea; font-style: italic;">[</span><span style="color: #8dec95; font-style: italic;">0</span><span style="color: #c792ea; font-style: italic;">];</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">if</span><span style="color: #c792ea; font-style: italic;"> (</span><span style="color: #00bff9; font-style: italic;">!</span><span style="color: #d6deeb; font-style: italic;">filterType</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">test</span><span style="color: #c792ea; font-style: italic;">(</span><span style="color: #d6deeb; font-style: italic;">uploadFile</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #7fdbca; font-style: italic;">type</span><span style="color: #c792ea; font-style: italic;">)) </span><span style="color: white; font-style: italic;">{</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #87aff4; font-style: italic;">alert</span><span style="color: #c792ea; font-style: italic;">(</span><span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">Please select a valid image.</span><span style="color: #6bff81;">"</span><span style="color: #c792ea; font-style: italic;">);</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">return</span><span style="color: #c792ea; font-style: italic;">;</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: white; font-style: italic;">}</span></div><div><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d6deeb; font-style: italic;">onfile_uploadkelengkapan1</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">readAsDataURL</span><span style="color: #c792ea; font-style: italic;">(</span><span style="color: #d7dbe0;">uploadFile</span><span style="color: #c792ea; font-style: italic;">);</span></div><div><span style="color: white; font-style: italic;">}</span></div><br /><div><span style="color: #00bff9; font-style: italic;">var</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d7dbe0;">onfile_uploadkelengkapan1</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">new</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #87aff4; font-style: italic;">FileReader</span><span style="color: #c792ea; font-style: italic;">()</span>;</div><div><span style="color: #d6deeb; font-style: italic;">onfile_uploadkelengkapan1</span>.<span style="color: #87aff4; font-style: italic;">onload</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #00bff9; font-style: italic;">function</span> (<span style="color: #d7dbe0;">event</span>) <span style="color: white;">{</span></div><div> <span style="color: #00bff9; font-style: italic;">var</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d7dbe0;">image</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">new</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #87aff4; font-style: italic;">Image</span><span style="color: #c792ea; font-style: italic;">()</span>;</div><br /><div> <span style="color: #d6deeb; font-style: italic;">image</span>.<span style="color: #87aff4; font-style: italic;">onload</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #00bff9; font-style: italic;">function</span> () <span style="color: white;">{</span></div><div> <span style="color: #00bff9; font-style: italic;">var</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d7dbe0;">canvas</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d6deeb; font-style: italic;">document</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">createElement</span><span style="color: #c792ea; font-style: italic;">(</span><span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">canvas</span><span style="color: #6bff81;">"</span><span style="color: #c792ea; font-style: italic;">)</span>;</div><div> <span style="color: #00bff9; font-style: italic;">var</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d7dbe0;">context</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d6deeb; font-style: italic;">canvas</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">getContext</span><span style="color: #c792ea; font-style: italic;">(</span><span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">2d</span><span style="color: #6bff81;">"</span><span style="color: #c792ea; font-style: italic;">)</span>;</div><div> <span style="color: #d6deeb; font-style: italic;">canvas</span>.<span style="color: #7fdbca; font-style: italic;">width</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #d6deeb; font-style: italic;">image</span>.<span style="color: #7fdbca; font-style: italic;">width</span> <span style="color: #00bff9; font-style: italic;">/</span> <span style="color: #8dec95;">2</span>;</div><div> <span style="color: #d6deeb; font-style: italic;">canvas</span>.<span style="color: #7fdbca; font-style: italic;">height</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #d6deeb; font-style: italic;">image</span>.<span style="color: #7fdbca; font-style: italic;">height</span> <span style="color: #00bff9; font-style: italic;">/</span> <span style="color: #8dec95;">2</span>;</div><div> <span style="color: #d6deeb; font-style: italic;">context</span>.<span style="color: #87aff4; font-style: italic;">drawImage</span>(<span style="color: #d7dbe0;">image</span>,</div><div> <span style="color: #8dec95;">0</span>,</div><div> <span style="color: #8dec95;">0</span>,</div><div> <span style="color: #d6deeb; font-style: italic;">image</span>.<span style="color: #7fdbca; font-style: italic;">width</span>,</div><div> <span style="color: #d6deeb; font-style: italic;">image</span>.<span style="color: #7fdbca; font-style: italic;">height</span>,</div><div> <span style="color: #8dec95;">0</span>,</div><div> <span style="color: #8dec95;">0</span>,</div><div> <span style="color: #d6deeb; font-style: italic;">canvas</span>.<span style="color: #7fdbca; font-style: italic;">width</span>,</div><div> <span style="color: #d6deeb; font-style: italic;">canvas</span>.<span style="color: #7fdbca; font-style: italic;">height</span></div><div> );</div><div> <span style="color: #00bff9; font-style: italic;">var</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d7dbe0;">tx</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d6deeb; font-style: italic;">canvas</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">toDataURL</span><span style="color: #c792ea; font-style: italic;">()</span>;</div><br /><div> <span style="color: #00bff9; font-style: italic;">var</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d7dbe0;">nn</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d6deeb; font-style: italic;">document</span><span style="color: #c792ea; font-style: italic;">.</span><span style="color: #87aff4; font-style: italic;">getElementById</span><span style="color: #c792ea; font-style: italic;">(</span><span style="color: #6bff81;">"</span><span style="color: #bcf0c0;">file_uploadkelengkapan</span><span style="color: #6bff81;">"</span><span style="color: #c792ea; font-style: italic;">).</span><span style="color: #7fdbca; font-style: italic;">value</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #00bff9; font-style: italic;">=</span><span style="color: #c792ea; font-style: italic;"> </span><span style="color: #d7dbe0;">tx</span>;</div><div> <span style="color: white;">}</span></div><div> <span style="color: #d6deeb; font-style: italic;">image</span>.<span style="color: #7fdbca; font-style: italic;">src</span> <span style="color: #00bff9; font-style: italic;">=</span> <span style="color: #d6deeb; font-style: italic;">event</span>.<span style="color: #f7ecb5; font-style: italic;">target</span>.<span style="color: #7fdbca; font-style: italic;">result</span>;</div><div><span style="color: white;">}</span>;</div></div><p>.</p><p>untuk ukuran gambar (width,height) bisa dibuat fixed misal canvas.width=600 ; canvas.height=400</p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-5697468401570128862021-08-12T09:17:00.007+07:002021-08-12T09:17:47.844+07:00Ubuntu 16.04 nginx Failed to Start LSB, error exit status 1<p> OS : Ubuntu 16.04 (Alibaba Cloud)</p><p>Kondisi : stuck nginx service :</p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-7GFjP13d5fY/YRSEDkR94wI/AAAAAAAAD4w/WOigJUlQvgwGbmRTVXEwT1tuO-lYC6V0ACLcBGAsYHQ/s787/image_2021-08-12_08-48-18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="417" data-original-width="787" src="https://1.bp.blogspot.com/-7GFjP13d5fY/YRSEDkR94wI/AAAAAAAAD4w/WOigJUlQvgwGbmRTVXEwT1tuO-lYC6V0ACLcBGAsYHQ/s16000/image_2021-08-12_08-48-18.png" /></a></div><br /><p><br /></p><p>.</p><p>Step 1 : disable service nginx</p><p><span style="background-color: #e4e6e8; color: #242729; font-family: ui-monospace, "Cascadia Mono", "Segoe UI Mono", "Liberation Mono", Menlo, Monaco, Consolas, monospace; font-size: 13px; white-space: pre-wrap;">systemctl disable nginx</span></p><p>delete file <span style="background-color: #e4e6e8; color: #242729; font-family: ui-monospace, "Cascadia Mono", "Segoe UI Mono", "Liberation Mono", Menlo, Monaco, Consolas, monospace; font-size: 13px; white-space: pre-wrap;">/lib/systemd/system/nginx.service</span></p><p>Step 2 : uninstall nginx :</p><p>sudo apt purge nginx</p><p><br /></p><p><a href="https://serverfault.com/questions/913055/removing-nginx-compilation" target="_blank">Sumber : https://serverfault.com/questions/913055/removing-nginx-compilation</a></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-66997641488533896672021-07-05T09:12:00.004+07:002021-07-05T09:12:44.943+07:00Android WebView : Enable Camera Capture / Enable WebView Access Camera<p>Sesuaikan Konfigurasi dengan File ini :</p><p><a href="https://drive.google.com/file/d/1RE8JrNPybaS4Ou6g12R8B2-IFlrWgg4x/view?usp=sharing" target="_blank">Enable Camera WebView</a></p><p>.</p><p>Referensi :<script src="https://gist.github.com/jhonsore/8a8378c147ec00ac6f3fa53569c82ef8.js"></script></p><p><br /></p><p>.</p><p><a href="https://gist.github.com/jhonsore/8a8378c147ec00ac6f3fa53569c82ef8">https://gist.github.com/jhonsore/8a8378c147ec00ac6f3fa53569c82ef8</a></p>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0tag:blogger.com,1999:blog-8647242962647096670.post-5664818050615103012021-07-05T09:04:00.008+07:002021-07-05T09:05:58.050+07:00Android WebView : Enable Upload File <p> Sesuaikan dengan File di link ini :</p><p><br /></p><p><a href="https://drive.google.com/file/d/1h0LnZYroPn5tfTwzb2840wiIZOpsAlId/view?usp=sharing" target="_blank">Enable Upload File WebView</a></p>.<div><br /></div><div>Sumber :</div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="266" src="https://www.youtube.com/embed/jA9TCP6Y7uU" width="320" youtube-src-id="jA9TCP6Y7uU"></iframe></div><br /><div><br /></div>Izoels noteshttp://www.blogger.com/profile/05836468051186956183noreply@blogger.com0