k001
k001
:...
  Viewing 0 - 12  
"приятно поговорить с умным человеком" (С)

Активно переписываюсь сам с собой: bug #1445.

кошмар на производственную тему

Тут вдруг нам понадобилась быстрая железка на платформе ARM. Я давай предлагать навигатор :), но в нём памяти мало, да и не быстрый он.

А у меня же есть ещё Marvell dev board. И решили мы туда видеокарточку воткнуть. Воткнули, включили, и тут на плате что-то ярким огнём загорелось и даже чуть-чуть бабахнуло. Это был конденсатор, а ещё там сгорел стабилизатор питания (а после него, видимо, и конденсатор). Очень жалко, хорошая плата была.

А где в Москве можно быстро купить что-то вроде sheeva plug? Или любой другой достаточно быстрый ARM с Ethernet. Очень хочется...

git-commit --interactive

Открыл для себя git-commit --interactive, позволяет выбрать файлы, а из файлов выбрать ханки, которые надо коммитить. Вполне удобно.

Вот как бывает... (С) Юрий Антонов

Нашёл багу фичу? в 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) последний почему-то сегфолтится.

git-svn rules

Какая, оказывается, чудесная вещь git-svn! Я с её помощью вполне удобно работаю с SVN репозиторием, свободно используя весь "локальный" арсенал git. А как накидаю патчей, говорю две команды

# отложить мои коммиты в сторону
# вытащить всё самое свежее из svn
# положить как коммиты в локальный git
# накатить поверх мои отложенные патчи
git-svn rebase

# закоммитить мои коммиты в удалённый svn repo
git-svn dcommit

О, сколько нам открытий чудных...

Нашёл сегодня в одной, не буду упоминать тут, какой именно, программе следующий код:

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

code wtf

Наткнулся на кусок кода. Не очень нравится. Как бы это поизящнее написать, но чтобы и недлинно, и понятно? Что-то вечером в пятницу ничего не приходит в голову.

if (flags & LOADED)
       sprintf(status, "loaded");
if (flags & DIRTY)
       sprintf(status, "%s%sdirty", status, (strlen(status)) ? ", " : "");

map data

А вот есть GeoRSS. А ещё есть KML. А ещё YMapsML.

Все три очень сильно похожи. Но разные. Ну ёлки ж палки.

век живи, век учись...

... дураком помрёшь.

Открыл ответы к задачке с 1 <= level <= 5. Практически все ответили правильно, всем зачёт. :)

Из комментов узнал для себя две интересные вещи:

1. Питон такие вещи писать позволяет и интерпретирует их так, как задумал программист (сообщил [info]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. Перл не позволяет так писать, ругается (сообщил [info]fenster@lj).

3. gcc -Wall тоже не хуже перла, ругается на такой код (сообщаю вам я сам):
warning: comparisons like X<=Y<=Z do not have their mathematical meaning

code wtf

Вот такой эпический код сегодня встретился:

        assert '(( 1 <= level <= 5))'


В комментах желающие могут рассказать, почему это не работает. Завтра расскриню.

Да, это написано на bash, но на С будет примерно так же.

javascript

Как это так случилось, что в JavaScript нет операции типа sleep, ну то есть чтобы сделать задержку. Там есть setTimeout(), который запустит указанную функцию через указанное время, но вот чтобы приостановить выполнение основного треда — я не нашёл.

Или я тупой?

Посчитать до 10000 не предлагайте, пожалуйста.

Update: вот такое нашёл, кажется, работает, во всяком случае в Thunderbird'е.

function sleep(millis) {
        var notifier = new EventNotifier();
        setTimeout(notifier, millis);
        notifier.wait->();
}    


Update2: ан нет, не работает нифига.

английский в коде

Всё хочу написать пост про английский язык в программном коде (и комментариях, конечно), но никак не могу. Будем поэтому считать, что это набросок (не путать с набросом!).

Read more... )

  Viewing 0 - 12