Игорь Пашев

Dec. 3rd, 2010

03:56 pm

Q: Как быстрее в Си++ обнулится переменная:
A = 0; или A ^= A; ?


A: while ( (A=rand()) != 0 );


// http://otvety.google.ru/otvety/thread?tid=1d16b9f18492a542

Tags: ,
(4 комментария | Оставить комментарий)

Dec. 1st, 2010

07:08 pm - l < 12 + n/1000

Такова верхняя граница длины римского числа величиной n.

Например:

n=1  ->   I -> l=1
n=2  ->  II -> l=2
n=19 -> XIX -> l=3
Детали в Википедии.

Это нужно для рационального выделения памяти.
Программа )

Tags: ,
(Оставить комментарий)

Nov. 29th, 2010

11:18 pm

gcc заменяет printf с простой строкой на puts.

С -O2 выкидывает куски кода внутри 100%-ложных условий (if (0) {...}).

Круто, чо :-)

test.c:

#include <stdlib.h>
#include <stdio.h>

const int DEBUG = 0;

int main ( int argc, char *argv[] )
{
    if (DEBUG) {
        printf("Debug!\n");
    }
    return EXIT_SUCCESS;
}



gcc -save-temps test.c -o test:
    .file	"test.c"
.globl DEBUG
	.section	.rodata
	.align 4
	.type	DEBUG, @object
	.size	DEBUG, 4
DEBUG:
	.zero	4
.LC0:
	.string	"Debug!"
	.text
.globl main
	.type	main, @function
main:
	leal	4(%esp), %ecx
	andl	$-16, %esp
	pushl	-4(%ecx)
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ecx
	subl	$4, %esp
	movl	DEBUG, %eax
	testl	%eax, %eax
	je	.L2
	subl	$12, %esp
	pushl	$.LC0
	call	puts
	addl	$16, %esp
.L2:
	movl	$0, %eax
	movl	-4(%ebp), %ecx
	leave
	leal	-4(%ecx), %esp
	ret
	.size	main, .-main
	.ident	"GCC: (GNU) 4.4.4"
	.section	.note.GNU-stack,"",@progbits

gcc -O2 -save-temps test.c -o test:
	.file	"test.c"
	.text
	.p2align 4,,15
.globl main
	.type	main, @function
main:
	pushl	%ebp
	movl	%esp, %ebp
	xorl	%eax, %eax
	popl	%ebp
	ret
	.size	main, .-main
.globl DEBUG
	.section	.rodata
	.align 4
	.type	DEBUG, @object
	.size	DEBUG, 4
DEBUG:
	.zero	4
	.ident	"GCC: (GNU) 4.4.4"
	.section	.note.GNU-stack,"",@progbits

Tags: , , ,
(3 комментария | Оставить комментарий)

05:51 pm

http://habrahabr.ru/blogs/sport_programming/108570/

Компиляция:

gcc -ansi -pedantic -Wall -Wextra -O2 -save-temps code.c -o code

Проверка:
# echo '123 abc 987 abaacb' | ./code
123 -> 132
abc -> acb
987 -> 
abaacb -> ababac

Исходник: )

Tags: ,
(Оставить комментарий)

Nov. 22nd, 2010

06:16 pm - Толковое руководство по autotools

http://www.lrde.epita.fr/~adl/dl/autotools.pdf

Заодно — пример грамотной презентации.

Tags: , ,
(Оставить комментарий)

Nov. 21st, 2010

02:42 pm

http://www.govnokod.ru/4502

Tags: ,
(Оставить комментарий)

Nov. 17th, 2010

09:40 pm

Чтоб не забыть: минимальная программа на ассемблере,
выводящая "Hello!" (без glibc)

.data

msg:
    .string "Hello!\n"
    .set length, . - msg - 1

.text
.globl _start

_start:
    movl    $4, %eax
    movl    $1, %ebx
    movl    $msg, %ecx
    movl    $length, %edx
    int     $0x80

    movl    $1, %eax
    xorl    %ebx, %ebx
    int     $0x80


Компилировать так:
gcc -nostdlib hello.s -o hello
Размер — 623 байта.

Подробности тут http://ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_программистов_C

Tags: , ,
(5 комментариев | Оставить комментарий)

Nov. 15th, 2010

07:09 am - n-й член арифметической прогрессии

https://github.com/ip1981/brainfuck/blob/master/arithm.bf

специально для:

http://otvety.google.ru/otvety/thread?tid=22cbb759809d53dd

Tags: ,
(Оставить комментарий)

Nov. 9th, 2010

11:33 pm - Как-то так

http://www.pomorsu.ru/Departments/tphyslab/doku.php/meta:history

Tags: ,
(2 комментария | Оставить комментарий)

Nov. 5th, 2010

09:17 pm - Аплодирую стоя!

http://pediatricianrpt.sourceforge.net/

Tags: ,
(Оставить комментарий)

08:19 pm - Makefile для DokuWiki

Дано:
Доступ к файлам DokuWiki по FTP.

Задачи:
1. Делать резервные копии (скачивать по FTP).
2. Обновлять DokuWiki (закачивать по FTP).
3. Тренироваться на localhost.

Примеры:
make backup — сделать резервную копию conf и data.
make upgrade — закачать изменённые локальные файлы (кроме conf и data).
make devel — обновить локальную копию.

Makefile )

Tags: , , , ,
(Оставить комментарий)

Nov. 4th, 2010

05:49 pm - Пролог велик

Работа с Прологом сильно отличается от работы с другими языками.

http://www.mail-archive.com/users-prolog@gnu.org/msg00409.html

Tags: ,
(Оставить комментарий)

Oct. 31st, 2010

01:46 pm

Исходники (альфа):
http://github.com/ip1981/dokuwiki-plugin-papers

Эта ссылка временная:
http://www.pomorsu.ru/Departments/tphyslab/doku/doku.php/%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8


http://www.pomorsu.ru/Departments/tphyslab/doku.php/%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8

Подробности потом.

Tags: , , ,
(Оставить комментарий)

Oct. 10th, 2010

08:18 pm - Сортировка строк с числами

На разных языках.
http://sourcefrog.net/projects/natsort/

Tags:
(Оставить комментарий)

Oct. 2nd, 2010

11:37 pm

http://citforum.ru/gazeta/165/

«Я уверен, что парадигма ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, только тогда на этой основе выводится аксиома. Т. е. в математике вы заканчиваете аксиомой. Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы вы приходите к тому, что оказываетесь в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг — из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле». Ричард Столлман (Richard Stallman) также известен своим критическим отношением к ООП, особенно он любит шутить насчет того мифа объектников, что ООП «ускоряет разработку программ»: «Как только ты сказал слово „объект“, можешь сразу забыть о модульности».

P. S. Правда, наезд на теорию относительности (далее) не к месту.

P. P. S. А её некоторые студенты пытают запрограммировать забор как набор
линий, образующих его периметр (объекты же!). Большого труда стоит
убедить их, что забор состоит из досок.

Tags:
(2 комментария | Оставить комментарий)

Aug. 28th, 2010

08:35 pm

Наковнокодил скрипт для переименования
файлов сериала «Стар Трек»,
на основе данных Википедии.
«Стар Трек» скачан известно откуда.

Read more... )<font color

Tags: , ,
(Оставить комментарий)

Aug. 13th, 2010

11:59 am - drwsrwsrwx

Заметил, что ВНЕЗАПНО меняются права на домашний каталог —
он становится доступным всем на запись + SUID: drwsrwsrwx

Это случалось очень редко, и причины были совсем не ясны.
Это было на двух различных компьютерах с различным набором программ,
на одном из компьютеров системы была недавно установлена начисто.
Это происходило только у залогиненного пользователя.


Отбросив паранойю, стал искать причину.
Из Википедии взял программу для работы с inotify
(кстати, отладил её и поместил обратно).

Запустил и стал ждать: ./watch /home

Ничего не происходило.
Методом тыка (за два дня) было выснено, что права меняются
при просмотре рекордов у игры Rocks-n-Diamonds (sic!),
которую я недавно собрал и установил на обе машины.

С помощью grep нашёлся виновник — файл libgame/setup.c,
функция void createDirectory(char *dir, char *text, int permission_class).

Нехитрым патчем удалил код, меняющий права каталога,
ибо программы не должны менять права сами, а только сообщать,
если им не хватает прав.

В самой же игре есть «common data directory», которая по умолчанию — текущий каталог,
при запуске программы из менюшки текущим каталогом является домашний каталог.
Вот и вся интрига.

Tags: ,
(Оставить комментарий)

Apr. 19th, 2010

10:22 pm

Я подумал, что вылетевшие из головы термины и понятия
не могут служить для интеллектуальной дискриминации
или быть основанием для завала теста.

И добавил возможность подсказки.

http://github.com/ip1981/autodocs/tree/master/test/
http://github.com/ip1981/edutester/tree/master/


Альбом: Screenshots

Tags: , , ,
(2 комментария | Оставить комментарий)

Jan. 10th, 2010

02:51 pm - Численное интегрирование на Хаскеле

Методы прямоугольников, трапеций, Симпсона.
Цель — освоиться с Хаскелем.

where h = (b - a) / n )

P. S. GHC 6.12.1 прекрасно собирается из исходников и устанавливается как надо и куда скажешь :-)

Tags: , ,
(Оставить комментарий)

02:46 pm - Программа для изменения регистра имён файлов

Может делать имена большими буквам, маленькими буквами, большими первыми буквами каждого слова.

Требует GNU sed, работает с Юникодом.

#!/bin/bash )

Tags: ,
(Оставить комментарий)

Navigate: (Previous 20 Entries | Next 20 Entries)