Author Archives: hermes

Java, custom annotation, AspectJ, Maven: minimalistic example

Goal: some code must be executed before/after the method annotated with custom annotation.
We need a custom annotation first:

package yourpackage;
 
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
 
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyCustomAnnotation {
    public boolean isRun() default true;
}

An aspect:

package yourpackage;
 
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
 
@Aspect
public class MyCustomAspect {
    @Before("execution(* *.*(..)) && @annotation(MyCustomAnnotation)")
    public void advice(JoinPoint joinPoint) {
        System.out.printf("BINGO! advice() called before '%s'%n", joinPoint);
    }
}

Continue reading

Dummy SMTP server

Решение автора JOTN, отсюда:

#!/usr/bin/perl -w
use Net::SMTP::Server;
use Net::SMTP::Server::Client;
 
$server = new Net::SMTP::Server('localhost', 25) || die("$!\n");
 
while($conn = $server->accept()) {
	my $client = new Net::SMTP::Server::Client($conn) ||
	die("Unable to handle client connection: $!\n");
	$client->process || next;
 
	# Here's where you can write it out or just dump it. Set $filename to
	# where you want to write it
	$filename = './collected_mail.txt';
	open(MAIL,">> $filename") || die "$filename: $1";
	print(MAIL "$client->{MSG}\n");
	close(MAIL);
}

/etc/ssmtp/ssmtp.conf:

root=postmaster
mailhub=localhost
#rewriteDomain=
hostname=localhost
FromLineOverride=YES

Под Ubuntu необходимые пакеты называются libnet-smtp-server-perl и ssmtp.

A1185, A1322: inside a MacBook battery

Батарейка/аккумулятор MacBook A1185 внутриОбразовалась у меня парочка вздувшихся и непригодных более к применению аккумуляторов от MacBook (совсем старого и просто старого — модели 2005 и 2010 годов). Выдачи поисковиков на запросы, аналогичные «батарейка MacBook внутри» и «разобранный аккумулятор MacBook», оказались весьма скудны. Естественно, разбирать аккумуляторы крайне не рекомендуется, но любопытство зашкаливало. Фото под катом.

Continue reading

Repost: Сказка о криворуких ебланах

Каждый вечер, когда солнце прячется за верхушки сосен, на небе зажигаются звезды, а где-то в лесу неподалеку начинает ухать сова, которую мы уже два месяца не можем поймать, чтобы сварить из нее суп, – так вот: каждый раз, когда на нашу свалку опускается темнота, вся детвора собирается вокруг ржавого чайника в пустой нефтяной цистерне на западной окраине, чтобы попить кипятка, съесть по кусочку сахара и послушать сказку на ночь.

Урчит, закипая, чайник. Ухает сова. Восемь носов выжидательно пошмыгивают. Восемь пар глаз внимательно следят за мной.

Continue reading

Быстрый генератор случайных имён-фамилий для базы данных

Относительно быстрый генератор псевдослучайного списка имён-фамилий и рандомных данных в базу. Фокус заключается в записи группы сгенерированных данных сперва во временную таблицу в памяти, потом блокировке основной таблицы и переносе данных туда из временной, после чего блокировка снимается, а цикл повторяется необходимое количество раз.

Continue reading

Зелёный слоник

(Стук в дверь)
— Войдите!
— Товарищ капитан, звали?
— Вызывал! Прибыли тут двое.
— Оформить?
— Оформить как надо.
— Понял.
— Понял?
— Да.
— Ну давай, свободен!
— Фуф.
— Слушай, а… сколько сейчас времени, ты не знаешь? Так, примерно, можешь почувствовать?

Continue reading

1/72 Tiger I

Tiger I Набор 5002 от «Звезды», предназначенный для сборки без клея. Собран с использованием клея, нарушением предписанного инструкцией порядка сборки и тонной матов на стадии окраски полусотни катков и сборки ломких хрупких гусениц.

Continue reading

Очередная копия USBasp – тренировка на кошках

Как говорится, repetitio est mater studiorum. А раз повторять, то для начала что-то простое, железобетонно-надёжное и необходимое. Пусть это будет USBasp :-)

Автор, исходник и прошивка, а так же альтернативы исполнения – всё тут: fischl.de

Собран и оттестирован девайс давно, подробностей уже не помню, но кое-как работал даже криворуко вытравленный прототип. Хоть самоделка на колене – штука крутая, но для полной железобетонности и эксперимента ради, изготовление печатной платы в минимально возможном количестве было заказано в Seedstudio (описание процедуры есть на EasyElectronics). В конце статьи ссылка на архив с исходниками.

Continue reading

JDM программатор PIC

Недавно появилась необходимость прошить один-два контроллера PIC16F84, в связи с чем начаты поиски программатора попроще. И такой был найден, а потом и собран – JDM PIC programmer.

Использовались материалы:

Continue reading

Памятка: avr-gcc, компиляция

Необходимые компоненты:

port install avr-gcc avr-libc

Создание объектного файла, линковка и получение исполняемого модуля:

avr-gcc -g -Os -mmcu=attiny2313 -c main.c
avr-gcc -g -Os -mmcu=attiny2313 -o main.elf main.c
avr-objcopy -j .text -j .data -O ihex main.elf main.hex

Заливка:

avrdude -c usbasp -p attiny2313 -U flash:w:main.hex

Памятка: Vcc, Vdd

VCC – Voltage Collector Collector. Positive supply voltage.
VDD – Voltage Drain Drain. Positive supply voltage.
VEE – Voltage Emitter Emitter. Negative supply, ground.
VSS – Voltage Source Source. Negative supply, ground.

VCC – For TTL circuitry, this is the +5 volts which sits on the collector of the bi-polar transistor output circuit.
VDD – For CMOS circuitry (like the PIC) this is the +5 (or +3) voltage that sits on the ‘drain’ of a MOS-FET transistor output circuit.
VEE – For TTL circuitry, this is the GND which sits on the emitter of a bi-polar transistor output circuit.
VSS – For CMOS circuitry, this is the GND that sits on the ‘source’ of a MOS-FET transistor output circuit.

Перекидывание почты в базу: PHP, IMAP, MySQL

Возникла необходимость перелить в базу данных содержимое почтового ящика. По получившемуся архиву должен осуществляться относительно быстрый поиск. Следующий скрипт забирает письма по IMAP, парсит их, помещает в MySQL, и при необходимости удаляет обработанную почту (отвечающий за удаление кусок кода нужно раскомментировать). Если удалять письма не нужно, то для более быстрой работы можно использовать опцию readonly при инициализации соединения с почтовым сервером.

В скрипте не предусмотрена обработка писем во вложенных папках, так как это не требовалось. Данные собираются в поля: дата, отправитель, получатели (to, cc и bcc скомбинированы в одну строку) и тема письма. Полная копия письма также сохраняется в BLOB.

Continue reading

OS X: Disable cmd-p printing from Finder

Original post by Acker.

I’ve accidentally sent pages upon pages of programming to a printer and wasted so much paper cause I fat-fingered ⌘P instead of ⌘O.

To remove command+p from finder:

Open System PreferencesKeyboardKeyboard ShortcutsApplication Shortcuts in the left panel → click the «+» button below the right panel → Select Finder as your Application. Then set the menu title to exactly the case-sensative value of «Bring All to Front» and set Keyboard Shortcut to ⌘P by actually pressing the-command-key+p-key.

I tried setting the Keyboard Shortcut of command+p to «Open» but the command+o stopped working.