Skip to content

Instantly share code, notes, and snippets.

View ihsangan's full-sized avatar
💬
ingfokan mood buat ngoding

Ihsan ihsangan

💬
ingfokan mood buat ngoding
View GitHub Profile
@ihsangan
ihsangan / malas.html
Created April 13, 2025 05:37
Buat event landing page IMPHNEN
<!DOCTYPE html>
<html lang="id">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>IMPHNEN</title>
</head>
<body>
<center><h1>Ingin Menjadi Programmer Handal Namun Enggan Ngoding</h1></center>
</body>
</html>

Kisah Cinta dengan Vue-chan: Dari Options API hingga Composition API 💚

Masih kuingat hari pertama bertemu Vue-chan di sebuah tech conference. Saat itu aku hanyalah seorang developer yang lelah dengan vanilla JavaScript. Di tengah keramaian, mataku terpaku pada sosoknya yang anggun dengan logo berwarna hijau yang menenangkan. "A-ano... kamu kelihatan bingung. Mau aku ajari cara membuat website yang reactive?" sapanya malu-malu. Hatiku langsung berdebar. Cara bicaranya yang lembut dan dokumentasinya yang begitu jelas membuatku jatuh cinta pada pandangan pertama. Awalnya Vue-chan mengajariku dengan Options API, pendekatan tradisional yang mudah dipahami:

<script>
export default {
    data() {
 return {
dig NS +additional +trace takeover.us.kg. @208.67.222.222
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.15.tuxcare.els1 <<>> NS +additional +trace takeover.us.kg. @208.67.222.222
;; global options: +cmd
.			518400	IN	NS	a.root-servers.net.
.			518400	IN	NS	b.root-servers.net.
.			518400	IN	NS	c.root-servers.net.
.			518400	IN	NS	d.root-servers.net.
.			518400	IN	NS	e.root-servers.net.
.			518400	IN	NS	f.root-servers.net.
async function AboutMe() {
  const name = 'Muhammad Ihsan';
}
@ihsangan
ihsangan / error-404-page-not-found-80s-hacker-theme.markdown
Created May 15, 2022 21:22
Error 404: Page not found – 80s hacker theme
@ihsangan
ihsangan / index.js
Last active April 25, 2025 09:23
Send email from Workers with MailChannel API
async function readRequestBody(request) {
const { headers } = request;
const contentType = headers.get('content-type') || '';
if (contentType.includes('application/json')) {
return JSON.stringify(await request.json());
} else if (contentType.includes('form')) {
const formData = await request.formData();
const body = {};
for (const entry of formData.entries()) {
body[entry[0]] = entry[1];
@ihsangan
ihsangan / index.js
Created March 4, 2022 02:22
How i serve https://www.isan.eu.org/ using Cloudflare Workers and GitHub Pages
async function handleRequest(request) {
let ms = Date.now()
let add = new Date(ms + 604800000)
const url = new URL(request.url)
url.hostname = "ihsangan.github.io"
let req = new Request(url, request)
let response = await fetch(req, {
cf: {
minify: { javascript: true, css: true, html: true },
cacheTtl: 86400,
async function handleRequest(request) {
const url = new URL(request.url);
// change the hostname
url.hostname = "rule34.paheal.net";
let req = new Request(url, request);
const response = await fetch(req, {
// RequestInitCfProperties
// see: https://developers.cloudflare.com/workers/runtime-apis/request#requestinitcfproperties
cf: {
minify: {
async function handleRequest(request) {
const url = new URL(request.url)
// change the hostname
url.hostname = "example.domain.com"
let req = new Request(url, request)
let response = await fetch(req, {
// RequestInitCfProperties
// see: https://developers.cloudflare.com/workers/runtime-apis/request#requestinitcfproperties
cf: {
minify: { javascript: true, css: true, html: true },