Featured

Kitab Nginx

Nginx – sebuah aplikasi web server yang cepat dan multi-fungsi, saya sendiri sering memanfaatkan nginx untuk web server, http_image_filter, melayani statics file, optimasi kecepatan loading sebuah halaman, cache dan masih banyak lagi. Untuk itu pantas kiranya dibuatkan featured post tersendiri, biar lebih mudah dicari. Seperti biasa, tulisan ini juga bersifat continuously improved.

Continue reading “Kitab Nginx”

Advertisements

Set Blank Password di MySQL (Development)

Ingat ya, ini cuma untuk kebutuhan local alias development aja…

Kalau sebelumnya harus pakai sudo baru bisa masuk ke mysql console, sekarang bisa menggunakan user biasa, caranya:

  1. First, connect in sudo mysql
    sudo mysql -u root
    
  2. Check your accounts present in your db
    SELECT User,Host FROM mysql.user;
    +------------------+-----------+
    | User             | Host      |
    +------------------+-----------+
    | admin            | localhost |
    | debian-sys-maint | localhost |
    | magento_user     | localhost |
    | mysql.sys        | localhost |
    | root             | localhost |
    
  3. Delete current root@localhost account
    mysql> DROP USER 'root'@'localhost';
    Query OK, 0 rows affected (0,00 sec)
    
  4. Recreate your user
    mysql> CREATE USER 'root'@'%' IDENTIFIED BY '';
    Query OK, 0 rows affected (0,00 sec)
    
  5. Give permissions to your user (don’t forget to flush privileges)
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
    Query OK, 0 rows affected (0,00 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0,01 sec)
    
  6. Exit MySQL and try to reconnect without sudo.

Cara Install MySQL di Kali Linux 2017.2 (Rolling)

Entah kenapa kok ketika di ketik

sudo apt install mysql-

Kemudian tekan tab, gak muncul mysql-server. Mentang-mentang distro pentest kemudian gak butuh mysql gitu apa? Hehehehe… just kidding…. Mungkin karena versi light yang saya install, sehingga repo ke mysql tidak disertakan. Tapi jangan khawatir, masih bisa diatasi kok. Begini caranya:

Download tools dari laman URL berikut:

https://dev.mysql.com/downloads/repo/apt/

install menggunakan

sudo dpkg -i <paket_name>

kemudian update

sudo apt update

Setelah itu

sudo apt install mysql-server

Beres….

 

 

MySQL di Python3

1200px-MySQL.svg

Jarang banget saya menggunakan engine database yang satu ini, seringnya menggunakan engine NoSQL seperti mongo. Namun, kali ini beda, karena project ini tuntutan klien, dan klien familiar dengan MySQL ya sudah…

Di sini saya menggunakan Python3, library yang saya butuhkan:

  • mysqlclient
  • sqlalchemy
  • sqlalchemy_utils

Saya menggunakan ORM (sqlalchemy) untuk mempermudah kerja, daripada harus menulis raw query syntax, so painful…

Berikut ini contoh kode membuat database dan tabel:

from sqlalchemy import create_engine, MetaData
from sqlalchemy_utils import database_exists, create_database
from sqlalchemy import Column, DateTime, String, Integer, func
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

# create db if not exist
engine = create_engine("mysql://root:@localhost/subdhunter")
if not database_exists(engine.url):
    create_database(engine.url)

# create db model
class Domain(Base):
    __tablename__ = 'domain'
    id= Column(Integer, primary_key=True)
    domain_name = Column(String(100))
    domain_title = Column(String(250))
    domain_status = Column(Integer)
    real_domain_name = Column(String(100))
    created = Column(DateTime, default=func.now())

# create table
from sqlalchemy.orm import sessionmaker
session = sessionmaker()
session.configure(bind=engine)
Base.metadata.create_all(engine)

sdasd

Beralih ke Kali Linux

Peralihan ini sekaligus penanda mulainya belajar tentang cyber security, sebuah tema yang hampir tidak pernah saya sentuh, meski sudah bertahun-tahun menekuni dunia web programming. Distro Kali Linux ini berbasis Debian, jadi beberapa basic command hampir sama dengan Ubuntu.

Sempat gagal menginstall menggunakan GNOME version dan Mate version (corrupt iso), akhirnya berhasil dengan menggunakan Lite version (XFCE). Untuk tools-tools yang ada belum bisa cerita banyak karena memang masih nol di dunia ini. Nanti seiring dengan proses belajar, insyaAllah akan saya post materi-materi yang sekiranya cukup penting.

Sekian…

Rasakan Kecepatan Firefox Quantum Versi Beta

Hari ini, tim pengembang Firefox mengumumkan versi Beta dari Firefox Quantum, versi terbaru dari Firefox yang diklaim memiliki kinerja jauh lebih cepat dari versi-versi sebelumnya. Bagaimana bisa lebih cepat? Kalau sebelumnya Firefox menggunakan hanya satu CPU core, sekarang Firefox Quantum memanfaatkan multiple CPU core yang sekarang lumrah dijumpai di berbagai mesin baik desktop maupun mobile.

Kalau mau lebih yakin, silakan lakukan uji menggunakan Speedometer 2.0

Server harus sering-sering ditengok

Awalnya sih tidak ada rasa curiga babarblas, karena memang ketika diakses, si website ya keliatan normal-normal saja. Dan semalam saya coba untuk upload sebuah file, dan hasilnya error 524 timeout (cloudflare). Dugaan saya langsung ke redis, karena memang beberapa saat terakhir ini yang sering bermasalah ada di redisnya.

Sudah coba restart, ternyata tidak ada masalah dengan redis, rqworker juga sudah direstart, bahkan timeout di rq_queues juga sudah ditambah, dari 360 ke 3600. Entaah kenapa, saya coba restart gunicorn dan gunicorn failed to start, katanya failed import module autocomplete_light, padahal si module itu ada di sana, nongkrong dengan manisnya.

Coba uninstall dan install, tetep saja, dan entah setelah restart gunicorn yang keberapa, kok tiba2 saja si aplikasi mau jalan lagi…. what the heck???

Membuat Pagination di Flask + MongoDB

Pertama, kita butuh flask extension yang bernama flask-paginate

https://pythonhosted.org/Flask-paginate/

Kemudian tambahkan baris berikut di route yang mau di-paginasi, misal search result:

from flask_paginate import Pagination, get_page_parameter

@app.route("/search/<keyword>")
def search(keyword):
	page = request.args.get(get_page_parameter(), type=int, default=1)
	per_page = 3
	offset = (page - 1) * per_page
	data = db.product.find({'$text': {'$search': keyword}}, {'score':
		{'$meta':
		'textScore'}}).sort([('score', {'$meta': 'textScore'})]).skip(offset).limit(per_page)

	pagination = Pagination(page=page,
		per_page=per_page,
		total=data.count(),
		css_framework='bootstrap3',
		search=False,
		record_name='products')

	keyword_title = keyword.replace('-', ' ').title()
	return render_template("search.html",
		keyword_title=keyword_title,
		data=data,
		pagination=pagination
	)

Selanjutnya di template search.html:

{% for i in data %}
<p>{{ i['title'] }}</p>
{% endfor %}

{{ pagination.info }}
{{ pagination.links }}

Langkah-langkahnya adalah:

  1. Menentukan per_page (limit di mongo)
  2. Menentukan offset (skip kalau di mongo)
  3. Membuat query ke mongo
  4. Membuat object paginasi
  5. Menampilkan data paginasi