April 2032
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
|
3/5/10 06:32 pm
"приятно поговорить с умным человеком" (С)
Активно переписываюсь сам с собой: bug #1445.
2/4/10 03:53 pm
кошмар на производственную тему
Тут вдруг нам понадобилась быстрая железка на платформе ARM. Я давай предлагать навигатор :), но в нём памяти мало, да и не быстрый он.
А у меня же есть ещё Marvell dev board. И решили мы туда видеокарточку воткнуть. Воткнули, включили, и тут на плате что-то ярким огнём загорелось и даже чуть-чуть бабахнуло. Это был конденсатор, а ещё там сгорел стабилизатор питания (а после него, видимо, и конденсатор). Очень жалко, хорошая плата была.
А где в Москве можно быстро купить что-то вроде sheeva plug? Или любой другой достаточно быстрый ARM с Ethernet. Очень хочется...
10/22/09 04:56 pm
git-commit --interactive
Открыл для себя git-commit --interactive, позволяет выбрать файлы, а из файлов выбрать ханки, которые надо коммитить. Вполне удобно.
10/21/09 10:57 am
Вот как бывает... (С) Юрий Антонов
Нашёл багу фичу? в glibc. Update: на всякий случай зафайлил #10818 в sources.redhat.com bugzilla.
[kir@kir ~]$ cat null.c #include <stdio.h>
int main(void) { fprintf(stdout, "%s\n", NULL); printf("%s%s\n", NULL, NULL); printf("%s\n", NULL); } [kir@kir ~]$ gcc -o null null.c [kir@kir ~]$ ./null (null) (null)(null) Segmentation fault
glibc-2.9-3.x86_64 gcc-4.3.2-7.x86_64
А всё потому, что (1) кто-то слишком умный оптимизирует printf с агрументами ("%s\n", str) до puts(str); (2) puts(NULL) вызывает strlen(NULL); (3) последний почему-то сегфолтится.
10/20/09 07:36 pm
git-svn rules
Какая, оказывается, чудесная вещь git-svn! Я с её помощью вполне удобно работаю с SVN репозиторием, свободно используя весь "локальный" арсенал git. А как накидаю патчей, говорю две команды
# отложить мои коммиты в сторону # вытащить всё самое свежее из svn # положить как коммиты в локальный git # накатить поверх мои отложенные патчи git-svn rebase
# закоммитить мои коммиты в удалённый svn repo git-svn dcommit
10/16/09 06:58 pm
О, сколько нам открытий чудных...
Нашёл сегодня в одной, не буду упоминать тут, какой именно, программе следующий код:
if ((fp = fopen(file, "w")) < 0) ...
Удивился, конечно. Видимо, раньше было написано open, или ещё почему. Исправил, конечно. Но не в этом суть.
Более всего удивился тому, что gcc не ругается даже с -Wall. Выяснил, что указатель он приводит к unsigned, поэтому результат сравнения всегда ложен.
Попробовали с коллегой написать так:
unsigned int a; if (a < 0) return 1; return 0;
И опять gcc не ругается, а вместо этого даже с -O0 генерит код, который не делает никаких сравнений, а сразу возвращает результат. То есть, собака, знает, что сравнение бессмысленное, но молчит.
Оказалось, надо ему сказать -Wextra, и уж тогда начинает ругаться. Для второго случая вот так: warning: comparison of unsigned expression < 0 is always false
5/22/09 07:53 pm
code wtf
Наткнулся на кусок кода. Не очень нравится. Как бы это поизящнее написать, но чтобы и недлинно, и понятно? Что-то вечером в пятницу ничего не приходит в голову.
if (flags & LOADED)
sprintf(status, "loaded");
if (flags & DIRTY)
sprintf(status, "%s%sdirty", status, (strlen(status)) ? ", " : "");
5/6/09 02:16 pm
map data
А вот есть GeoRSS. А ещё есть KML. А ещё YMapsML.
Все три очень сильно похожи. Но разные. Ну ёлки ж палки.
4/20/09 12:36 pm
век живи, век учись...
... дураком помрёшь.
Открыл ответы к задачке с 1 <= level <= 5. Практически все ответили правильно, всем зачёт. :)
Из комментов узнал для себя две интересные вещи:
1. Питон такие вещи писать позволяет и интерпретирует их так, как задумал программист (сообщил shep256@lj), то есть выражение 1 <= level <= 5 будет возвращать true, если level принимает значения от 1 до 5, и false в противном случае! Вот что говорит по этому поводу питонодокументация: Comparisons can be chained arbitrarily; for example, x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).
2. Перл не позволяет так писать, ругается (сообщил fenster@lj).
3. gcc -Wall тоже не хуже перла, ругается на такой код (сообщаю вам я сам): warning: comparisons like X<=Y<=Z do not have their mathematical meaning
4/17/09 05:04 pm
code wtf
Вот такой эпический код сегодня встретился:
assert '(( 1 <= level <= 5))' В комментах желающие могут рассказать, почему это не работает. Завтра расскриню. Да, это написано на bash, но на С будет примерно так же.
3/18/09 01:36 am
javascript
Как это так случилось, что в JavaScript нет операции типа sleep, ну то есть чтобы сделать задержку. Там есть setTimeout(), который запустит указанную функцию через указанное время, но вот чтобы приостановить выполнение основного треда — я не нашёл.
Или я тупой?
Посчитать до 10000 не предлагайте, пожалуйста.
Update: вот такое нашёл, кажется, работает, во всяком случае в Thunderbird'е.
function sleep(millis) {
var notifier = new EventNotifier();
setTimeout(notifier, millis);
notifier.wait->();
}
Update2: ан нет, не работает нифига.
12/6/08 10:09 pm
английский в коде
Всё хочу написать пост про английский язык в программном коде (и комментариях, конечно), но никак не могу. Будем поэтому считать, что это набросок (не путать с набросом!).
( Read more... )
|