Дві найбільш дикі речі, які я побачив під час рефакторінгу чужого коду на Сі, — це заміна include header через extern’и і примусова індексація масивів з одинички з передачею вказівника на чужу область пам’яті. Найголовніше, що це два випадки коректного коду, але чому таке комусь приходить у голову, я не знаю.

Зробив анонс dnsbalancer’а на ЛОРі, спровокувавши хейтерів на веселий тред. Хоча, насправді, там кілька світлих ідей для розробки є, над чим я зараз потихеньку думаю.

Також опублікував відрефакторений плюсовий код ретрекера XBTT, ми його використовуємо, щоб надавати користувачам retracker.local (трохи економить зовнішній трафік). Насправді, я його хотів просто опакетити, але код там настільки гидезно був зібраний докупи (хоча сам по собі доволі строго писаний по стандарту), що я вирішив витратити кілька годин свого робочого часу, щоб привести його до ладу хоча б з виду.

Ну і про більш приємне. Сьогодні був один із тих надзвичайно рідкісних днів, коли я читав свої вірші на публіку. Це була 141-ша «Перша кава від Кав’ярні Кульчицького» в Купідоні на Пушкінській, і наступної суботи я, мабуть, піду ще. Читати мені є що.

А ще отримав автограф у примірнику детективних новел «Маніяк на замовлення» (посилання даю тільки щоб було видно, як виглядає ця книжка) від самого Оповідача. Там опублікована одна її новела.

Сьогодні сталися дві дрібномасштабні, але дуже приємні для мене події.

По-перше, мій іграшковий проект по написанню альтернативного FUSE-клієнта для кластерної файлової системи GlusterFS тепло сприйняли й узяли під своє крило розробники GlusterFS, і тепер сам проект хоститься в їхній організації на GitHub’і. Приймаються pull-request’и, я типу головна людина по цьому проекту. Є шанси, що колись у майбутньому ця штука замінить добрий шмат коду GlusterFS більш простим рішенням.

По-друге, мій комміт уперше потрапив у апстрім ядра, і нова версія 4.6, яка зараз ще перебуває тільки на стадії третього реліз-кандидата, матиме трішки, але безпосередньо моєї праці.

Сьогодні я покажу дещо з того, чим займався в інституті, і чого знову торкнувся впродовж останнього тижня. Подана інформація поділена на дві частини, перша призначена для тих, хто поняття не має, про що взагалі може йти мова, друга буде по суті.
Читати далі »

Yet another тест від мене.

Тестувався час, який затрачується на обчислення перших 30 тисяч членів послідовності A000005 моєю багатопоточною програмкою. Тест написано так, щоб він створював послідовно від 1 до 20 потоків, на кожній ітерації обчислював оті 30 тисяч п’ять разів, а потім усереднював час на поточну ітерацію.

Як бачимо, з BFS рахує набагато швидше. А ще цікаво, що з BFS варто використовувати парну кількість потоків, бо непарний потік (у мене два ядра на проці без гіпертрейдинга) він постійно ганяє з ядра на ядро, і так, мабуть, вносить затримку в обчислення. У CFS із балансуванням навантаження все набагато гірше, тому графік не завжди йде «пилкою».

Придумую скрипт для автоматичної обробки фоток: змінення розміру й зафігачування копірайта. Поки надумав отаке:

#!/usr/bin/env bash

for i in *.JPG
do
	# resize image
	convert -resize 1280 $i _$i

	# get image dimensions
	dimensions=`identify "_$i" | awk '{print($3)}'`
	dim_x=`echo $dimensions | cut -d x -f 1`
	dim_y=`echo $dimensions | cut -d x -f 2`

	# get rectangle position
	top_x=`echo "$dim_x-315" | bc -l`
	top_y=`echo "$dim_y-22" | bc -l`

	# put copyright
	convert -pointsize 14 -font Liberation-Sans-Regular -draw "fill rgb(220,220,220) stroke rgb(220,220,220) rectangle $top_x,$top_y $dim_x,$dim_y" -draw 'gravity SouthEast fill black text 5,2 "© Oleksandr Natalenko :: http://natalenko.name/"' _$i __$i

	# remove garbage
	rm _$i
done

Це ще не фінальний варіант, буду доробляти/переробляти.