From nateford на inbox.ru Fri Apr 1 22:40:29 2011 From: nateford на inbox.ru (=?utf-8?Q?=D0=9A=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD=D1=82=D0=B8=D0=BD_=D0=9D=D0=B8=D0=BA=D1=83=D0=BB=D0=BE=D0=B2?=) Date: Fri, 01 Apr 2011 22:40:29 +0400 Subject: [P&AM Lab] =?utf-8?b?0LrQu9Cw0YHRgSDQutCy0LDQtNGA0LDRgtC90L7QuSA=?= =?utf-8?b?0LzQsNGC0YDQuNGG0YsuINC+0Ycg0YHRi9GA0L7QuS4=?= Message-ID: На допуск к экзамену нужно было вот такую штуку сделать. Жду идей, где что можно улучшить, кроме проверок работы malloc/realloc.. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: отсутствует Type: application/octet-stream Size: 4173 bytes Desc: отсутствует URL: From rg-400 на list.ru Fri Apr 1 22:48:59 2011 From: rg-400 на list.ru (=?koi8-r?Q?=EF=C4=C9=CE=C3=CF=D7_=E5=C7=CF=D2?=) Date: Fri, 01 Apr 2011 22:48:59 +0400 Subject: [P&AM Lab] =?koi8-r?b?y8zB09Mgy9fBxNLB1M7PyiDNwdTSycPZLiDP3iDT?= =?koi8-r?b?2dLPyi4=?= In-Reply-To: References: Message-ID: <1301683739.5443.6.camel@wbook> В Птн, 01/04/2011 в 22:40 +0400, Константин Никулов пишет: > На допуск к экзамену нужно было вот такую штуку сделать. Жду идей, где > что можно улучшить, кроме проверок работы malloc/realloc.. malloc заменить на new printf на cout Это же c++. Не переопределять операторы, а написать методы с нормальными именами add.., mul... Если это библиотека для матриц, то getchar() быть здесь не может. From sitkarev на komitex.ru Fri Apr 1 22:54:00 2011 From: sitkarev на komitex.ru (Grigoriy A. Sitkarev) Date: Fri, 01 Apr 2011 22:54:00 +0400 Subject: [P&AM Lab] =?utf-8?b?0LrQu9Cw0YHRgSDQutCy0LDQtNGA0LDRgtC90L7QuSA=?= =?utf-8?b?0LzQsNGC0YDQuNGG0YsuINC+0Ycg0YHRi9GA0L7QuS4=?= In-Reply-To: <1301683739.5443.6.camel@wbook> References: <1301683739.5443.6.camel@wbook> Message-ID: <4D961F48.3000001@komitex.ru> Егор, ты должен постараться дать какое-то обоснование каждому пункту (в целом всё верно). Иначе они выглядят как некая данность, а ведь это не так. Каждое из твоих предложений имеет чёткое обоснование. -- Г.А. 01.04.2011 22:48, Одинцов Егор пишет: > В Птн, 01/04/2011 в 22:40 +0400, Константин Никулов пишет: >> На допуск к экзамену нужно было вот такую штуку сделать. Жду идей, где >> что можно улучшить, кроме проверок работы malloc/realloc.. > malloc заменить на new > printf на cout > Это же c++. > Не переопределять операторы, а написать методы с нормальными именами > add.., mul... > Если это библиотека для матриц, то getchar() быть здесь не может. > From nateford на inbox.ru Fri Apr 1 23:14:42 2011 From: nateford на inbox.ru (=?utf-8?Q?=D0=9A=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD=D1=82=D0=B8=D0=BD_=D0=9D=D0=B8=D0=BA=D1=83=D0=BB=D0=BE=D0=B2?=) Date: Fri, 01 Apr 2011 23:14:42 +0400 Subject: [P&AM Lab] =?utf-8?b?0LrQu9Cw0YHRgSDQutCy0LDQtNGA0LDRgtC90L7QuSA=?= =?utf-8?b?0LzQsNGC0YDQuNGG0YsuINC+0Ycg0YHRi9GA0L7QuS4=?= In-Reply-To: <1301683739.5443.6.camel@wbook> References: <1301683739.5443.6.camel@wbook> Message-ID: зачем менять шило на мыло?.. операторы по заданию надо переопределить. а насчет getchar - то да, не подумал... посылаю его с письмом, в сааааамом низу.  Fri, 01 Apr 2011 22:48:59 +0400 письмо от Одинцов Егор < rg-400 на list.ru (sentmsg?compose&To=rg%2d400 на list.ru) >: > В Птн, 01/04/2011 в 22:40 +0400, Константин Никулов пишет: > > На допуск к экзамену нужно было вот такую штуку сделать. Жду идей, где > > что можно улучшить, кроме проверок работы malloc/realloc.. > malloc заменить на new > printf на cout > Это же c++. > Не переопределять операторы, а написать методы с нормальными именами > add.., mul... > Если это библиотека для матриц, то getchar() быть здесь не может. ----------- следущая часть ----------- Вложение в формате HTML было извлечено… URL: ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: отсутствует Type: application/pdf Size: 145438 bytes Desc: отсутствует URL: From sitkarev на komitex.ru Sat Apr 2 07:06:06 2011 From: sitkarev на komitex.ru (Grigoriy A. Sitkarev) Date: Sat, 02 Apr 2011 07:06:06 +0400 Subject: [P&AM Lab] libgost subversion In-Reply-To: <4D8F6552.9030209@komitex.ru> References: <4D8F6552.9030209@komitex.ru> Message-ID: <4D96929E.7030803@komitex.ru> Приветствую всех. Есть небольшие обновления в libgost. 1. Добавлен порт mingw32 для Windows. Если установить кросс-компилятор mingw то можно собирать бинарные файлы и DLL для Win32. У меня Debian/x86 и я устанавливал пакет кросс-компилятора gcc-mingw32. Этого было достаточно. После того как кросс-компилятор был установлен, достаточно запустить make с уже готовым make-файлом (его раньше не было): $ make -f Makefile.win Сборка для unix не изменилась, правила в Makefile также как и были, его make берёт по умолчанию. Соберутся exe-файлы и libgost.dll. Их можно скопировать на машину Win32 и запускать там. Правда там не получится делать как в Unix с перенаправлением ввода-вывода (это можно делать но будут лишние байты в шифрованном файле) и конвеер так просто не получится. Поэтому для вывода шифруемых файлов лучше пользоваться опцией `-o'. Я у себя на wine запускал это так: > gostcat.exe -k key.bin -s 0x01020304,0xdeadbeef test.c -o test.bin Вывод шифрованный отправляется в test.bin. Понятно что с вас будут требовать что-то работающее на этой ОС, поэтому я понимая такое требование к учащимся сделал этот порт. Экспериментируйте дальше сами. 2. Упрощён код гаммирования gost_apply_gamma(). Я думаю что теперь всем должно быть понятно как просто она работает. И добавить гаммирование с обратной связью не будет сложной задачей. -- Г.А. 27.03.2011 20:26, Grigoriy A. Sitkarev пишет: > Миша сегодня сделал нам ветку на репозитории и я положил туда код > который вчера показывал. Есть косметические изменения в утилите gostcat: From nateford на inbox.ru Sun Apr 3 22:41:51 2011 From: nateford на inbox.ru (=?KOI8-R?B?68/O09TBztTJziDuycvVzM/X?=) Date: Sun, 3 Apr 2011 22:41:51 +0400 Subject: [P&AM Lab] =?koi8-r?b?KMLF2iDUxc3ZKQ==?= Message-ID: <20110403224151.7bc23d5f@debian> решил начать писать BLAS. Пока что решил ограничиться матрицами... Вот, что есть на данный момент. ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: matrix.c Type: text/x-c++src Size: 5658 bytes Desc: отсутствует URL: ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: matrix.h Type: text/x-chdr Size: 1950 bytes Desc: отсутствует URL: From sitkarev на komitex.ru Sun Apr 3 22:59:56 2011 From: sitkarev на komitex.ru (Grigoriy A. Sitkarev) Date: Sun, 03 Apr 2011 22:59:56 +0400 Subject: [P&AM Lab] =?utf-8?b?KNCx0LXQtyDRgtC10LzRiyk=?= In-Reply-To: <20110403224151.7bc23d5f@debian> References: <20110403224151.7bc23d5f@debian> Message-ID: <4D98C3AC.2010503@komitex.ru> Это конечно всё хорошо. Но я думаю что можно смело браковать первый блин. Начиная от макроса check_ptr заканчивая именами функций и порядком аргументов в них. Пожалуй, придётся на какое-то время стать читателем и только потом писателем. Да и в общем то и не BLAS это вовсе, потому что спецификации не соответствует. Я знаю что вы все можете написать что-то работающее, но те кто научился что-то кодировать механически должен начать думать о том как научиться хорошо проектировать программы, начиная от структур данных заканчивая именованием функций и их семантикой. А для этого, ещё раз повторюсь, нужно стать Большим Читателем. Есть и явные ошибки, например в matrix_copy() проверка идёт на dst == NULL, так вот если он будет NULL, то указатель на выделенную память потеряется потому что значение dst не изменится по выходу из функции. Нужно писать тесты к таким функциям, и проверять обстоятельно каждую функцию. -- Г.А. 03.04.2011 22:41, Константин Никулов пишет: > решил начать писать BLAS. Пока что решил ограничиться матрицами... Вот, > что есть на данный момент. From nateford на inbox.ru Mon Apr 4 07:09:48 2011 From: nateford на inbox.ru (=?KOI8-R?B?68/O09TBztTJziDuycvVzM/X?=) Date: Mon, 4 Apr 2011 07:09:48 +0400 Subject: [P&AM Lab] =?koi8-r?b?KMLF2iDUxc3ZKQ==?= In-Reply-To: <4D98C3AC.2010503@komitex.ru> References: <20110403224151.7bc23d5f@debian> <4D98C3AC.2010503@komitex.ru> Message-ID: <20110404070948.04d6a1ea@debian> А чем плохи имена функций и макрос? Я лично вижу только то, что префикс можно укоротить. Ну, не BLAS так не BLAS. Спецификацию я еще почитать не успел, а мысль, что написать, имеется. Так почему бы и нет? По мере прочтения спецификации можно будет и BLAS писать. > Это конечно всё хорошо. > > Но я думаю что можно смело браковать первый блин. Начиная от макроса > check_ptr заканчивая именами функций и порядком аргументов в них. > Пожалуй, придётся на какое-то время стать читателем и только потом > писателем. > > Да и в общем то и не BLAS это вовсе, потому что спецификации не > соответствует. > > Я знаю что вы все можете написать что-то работающее, но те кто > научился что-то кодировать механически должен начать думать о том как > научиться хорошо проектировать программы, начиная от структур данных > заканчивая именованием функций и их семантикой. А для этого, ещё раз > повторюсь, нужно стать Большим Читателем. > > Есть и явные ошибки, например в matrix_copy() проверка идёт на dst == > NULL, так вот если он будет NULL, то указатель на выделенную память > потеряется потому что значение dst не изменится по выходу из функции. > > Нужно писать тесты к таким функциям, и проверять обстоятельно каждую > функцию. > > -- > Г.А. > > 03.04.2011 22:41, Константин Никулов пишет: > > решил начать писать BLAS. Пока что решил ограничиться матрицами... > > Вот, что есть на данный момент. > > _______________________________________________ > Lab mailing list > Lab на wiki.syktsu.ru > http://wiki.syktsu.ru/cgi-bin/mailman/listinfo/lab From sitkarev на komitex.ru Mon Apr 4 19:05:13 2011 From: sitkarev на komitex.ru (Grigoriy A. Sitkarev) Date: Mon, 04 Apr 2011 19:05:13 +0400 Subject: [P&AM Lab] =?utf-8?b?KNCx0LXQtyDRgtC10LzRiyk=?= In-Reply-To: <20110404070948.04d6a1ea@debian> References: <20110403224151.7bc23d5f@debian> <4D98C3AC.2010503@komitex.ru> <20110404070948.04d6a1ea@debian> Message-ID: <4D99DE29.1040203@komitex.ru> Сейчас по порядку. 04.04.2011 07:09, Константин Никулов пишет: > А чем плохи имена функций и макрос? Я лично вижу только то, что > префикс можно укоротить. Костя, понимаешь в чём дело, если бы ты знал в чём они плохи, то видимо писал бы как-то иначе. Имена функций "плохи" только тем что не соответствуют спецификации BLAS которой ты назвался (я об этом ниже). Если вообще говорить то они выбраны хорошо. С макросом плохо потому что ты его суёшь куда нужно и куда не нужно. Например, вот твоя функция matrix_resize(): int matrix_resize(matrix *mx, unsigned short rows, unsigned short cols) { double *res; ptr_check(mx, MATRIX_UNSET) if (mx->val == NULL) { mx->val = malloc(rows * cols * sizeof(double)); ptr_check(mx->val, MATRIX_NOMEM) } res = realloc(mx->val, rows * cols * sizeof(double)); ptr_check(res, MATRIX_NOMEM) mx->rows = rows; mx->cols = cols; return (matrix_clear(mx)); } Здесь минимум одна серьёзная ошибка есть. Кроме того, код в этом случае может быть проще (и должен): int matrix_resize(matrix *mx, unsigned short rows, unsigned short cols) { double *tmp; size_t n; ptr_check(mx, MATRIX_UNSET) n = rows * cols; tmp = realloc(mx->val, n*sizeof(double)); if (tmp == NULL) return MATRIX_NOMEM; mx->val = tmp; mx->rows = rows; mx->cols = cols; matrix_clear(mx); return mx; } Дальше, например в matrix_mult_matrix(): tmp1 = matrix_new(); ptr_check(tmp1, MATRIX_NOMEM) tmp2 = matrix_new(); ptr_check(tmp2, MATRIX_NOMEM) Это утечка памяти и это безусловно ошибка. Потому что должно было быть примерно так: tmp1 = matrix_new(); if (tmp1 == NULL) return MATRIX_NOMEM; tmp2 = matrix_new() if (tmp2 == NULL) { matrix_free(&tmp1); return MATRIX_NOMEM; } Внимательно все функции нужно пересмотреть потому что есть ошибки. И это не последние. Я просто все писать не могу. Поймите, если у вас код скомпилировался это ещё ничего не значит, ничего абсолютно. Сейчас вы просто что-то пишете и радуетесь если компилятор не ругался, но это только первый шаг к тому чтобы код действительно стал работать и кто-то мог на него положится в своих расчётах или программах. Почему вы пишете сложно? Потому что вы зачастую не понимаете семантики библиотечных функций, как это работает в действительности, у вас нет полной ментальной модели. Поэтому я обхожусь вызовом одного realloc(3). Что нужно сделать чтобы понимать семантику? Для этого нужно стать Большим Читателем. Сейчас вы многое просто копируете механически, не понимая смысла -- почему сделано так а не иначе? А нужно в первую очередь эти вопросы задавать, тогда вы начнёте двигаться вперёд, потому что начнёте понимать ЗАЧЕМ и ПОЧЕМУ, а это уже приближение к проектированию. Макрос ptr_check() вероятно взят из macros.h который есть почти во всех исходниках в репозитории, но он там полный и удобный и его назначение -- отлавливать ошибки программиста, а не ошибки которые возникают при runtime. У нас они назывались return_if_fail и return_val_if_fail, т.к. эти макросы делают return (что в общем случае категорически запрещается для макросов) они могут использоваться только в самом начале функций и только для проверки аргументов которые передавал туда пользователь. Проверка аргументов вставляется только в public функции, т.е. те которые идут в API библиотеки. В некоторых проектах макросы обрамлены ещё и директивами препроцессора #ifndef NDEBUG которые выключают их если код собирается без отладочных сообщений и т.д. Но runtime ошибки могут возникать всегда и потому они этими макросами не обрабатываются. Полнота этого макроса заключалась в том что он выводил место в котором случилось безобразие и программист мог быстро найти и поправить свой код. Макросы, которые занимают больше одной строки, настоятельно рекомендуется заключать в конструкцию do { } while (0). Это позволит избежать возможных трудно-обнаруживаемых ошибок при программировании. И хотя в случае с макросом ptr_check() это может и не случится, в силу его предназначения, такое обрамление всё равно нужно вставить. > Ну, не BLAS так не BLAS. Спецификацию я еще почитать не успел, а мысль, > что написать, имеется. Так почему бы и нет? По мере прочтения > спецификации можно будет и BLAS писать. Потому что здесь как в поговорке "назвался груздем -- полезай в короб". Назвался BLAS-ом -- соответствуй спецификации. Код возврата MATRIX_DONE режет глаз, почему он не назвался MATRIX_OK? Если у тебя есть MATRIX_DONE, то подразумевается что матрица может быть в некотором состоянии MATRIX_BUSY, раз код возврата читается как завершение действия. В программировании как и в архитектуре, нет ничего "просто так". И оно не должно превращаться в карго-культ -- "делаем так потому что видели что кто-то так делал, не понимая зачем". -- Г.А. From nateford на inbox.ru Mon Apr 4 22:34:49 2011 From: nateford на inbox.ru (=?KOI8-R?B?68/O09TBztTJziDuycvVzM/X?=) Date: Mon, 4 Apr 2011 22:34:49 +0400 Subject: [P&AM Lab] =?koi8-r?b?KMLF2iDUxc3ZKQ==?= In-Reply-To: <4D99DE29.1040203@komitex.ru> References: <20110403224151.7bc23d5f@debian> <4D98C3AC.2010503@komitex.ru> <20110404070948.04d6a1ea@debian> <4D99DE29.1040203@komitex.ru> Message-ID: <20110404223449.7b196e8c@debian> Чем спорить, проще признать, что с BLAS я махнул, неправильно название подобрал к тому, что пишу. Такое бывает. Тут скорее библиотечка для удобной (надеюсь такой сделать, да) работы с матрицами. А в целом хочу написать, наверное, еще несколько функций для решения СЛАУ методом Гаусса, наверное, а так же функцию, которая будет по Гауссу решать. Ну, и если найду еще какой-нибудь материал, то другим методом каким-нибудь. Но BLAS тоже заняться надо будет. А еще можно будет сделать либку для работы с комплексными числами, и заточить библиотеку matrix для работы с комплексными числами :) Вообще, что-то подозрительно много мыслей появляться стало, что бы такого написать можно.. Не очень понятно, почему в макросах нельзя использовать return. Потому что это может оказаться неожиданным для стороннего наблюдателя? Не очень понятно, почему matrix_resize должна возвращать указатель на матрицу. Насчет названий. Я думаю поменять префикс на mx, потому что matrix больно длинно получается, и вобще названия функций сокращенными сделать. Но тогда, наверное, надо и название структуры менять на mx? MATRIX_DONE мне тоже не очень нравится, но ничего лучше в голову не пришло в тот момент. Да, действительно, надо будет все перепроверить. Я пока что просто записывал мысли. А рефлексия у меня все-таки не мгновенно происходит.. В Mon, 04 Apr 2011 19:05:13 +0400 "Grigoriy A. Sitkarev" пишет: > Сейчас по порядку. > > 04.04.2011 07:09, Константин Никулов пишет: > > А чем плохи имена функций и макрос? Я лично вижу только то, что > > префикс можно укоротить. > > Костя, понимаешь в чём дело, если бы ты знал в чём они плохи, то > видимо писал бы как-то иначе. Имена функций "плохи" только тем что не > соответствуют спецификации BLAS которой ты назвался (я об этом ниже). > Если вообще говорить то они выбраны хорошо. > > С макросом плохо потому что ты его суёшь куда нужно и куда не нужно. > > Например, вот твоя функция matrix_resize(): > > int > matrix_resize(matrix *mx, unsigned short rows, unsigned short cols) > { > double *res; > > ptr_check(mx, MATRIX_UNSET) > > if (mx->val == NULL) { > mx->val = malloc(rows * cols * sizeof(double)); > ptr_check(mx->val, MATRIX_NOMEM) > } > > res = realloc(mx->val, rows * cols * sizeof(double)); > ptr_check(res, MATRIX_NOMEM) > > mx->rows = rows; > mx->cols = cols; > > return (matrix_clear(mx)); > } > > Здесь минимум одна серьёзная ошибка есть. Кроме того, код в этом > случае может быть проще (и должен): > > int > matrix_resize(matrix *mx, unsigned short rows, unsigned short cols) > { > double *tmp; > size_t n; > > ptr_check(mx, MATRIX_UNSET) > > n = rows * cols; > > tmp = realloc(mx->val, n*sizeof(double)); > > if (tmp == NULL) > return MATRIX_NOMEM; > > mx->val = tmp; > mx->rows = rows; > mx->cols = cols; > > matrix_clear(mx); > > return mx; > } > > Дальше, например в matrix_mult_matrix(): > > tmp1 = matrix_new(); > ptr_check(tmp1, MATRIX_NOMEM) > > tmp2 = matrix_new(); > ptr_check(tmp2, MATRIX_NOMEM) > > Это утечка памяти и это безусловно ошибка. Потому что должно было > быть примерно так: > > tmp1 = matrix_new(); > if (tmp1 == NULL) > return MATRIX_NOMEM; > > tmp2 = matrix_new() > if (tmp2 == NULL) { > matrix_free(&tmp1); > return MATRIX_NOMEM; > } > > Внимательно все функции нужно пересмотреть потому что есть ошибки. И > это не последние. Я просто все писать не могу. Поймите, если у вас > код скомпилировался это ещё ничего не значит, ничего абсолютно. > Сейчас вы просто что-то пишете и радуетесь если компилятор не > ругался, но это только первый шаг к тому чтобы код действительно стал > работать и кто-то мог на него положится в своих расчётах или > программах. > > Почему вы пишете сложно? Потому что вы зачастую не понимаете > семантики библиотечных функций, как это работает в действительности, > у вас нет полной ментальной модели. Поэтому я обхожусь вызовом одного > realloc(3). Что нужно сделать чтобы понимать семантику? Для этого > нужно стать Большим Читателем. > > Сейчас вы многое просто копируете механически, не понимая смысла -- > почему сделано так а не иначе? А нужно в первую очередь эти вопросы > задавать, тогда вы начнёте двигаться вперёд, потому что начнёте > понимать ЗАЧЕМ и ПОЧЕМУ, а это уже приближение к проектированию. > > Макрос ptr_check() вероятно взят из macros.h который есть почти во > всех исходниках в репозитории, но он там полный и удобный и его > назначение -- отлавливать ошибки программиста, а не ошибки которые > возникают при runtime. У нас они назывались return_if_fail и > return_val_if_fail, т.к. эти макросы делают return (что в общем > случае категорически запрещается для макросов) они могут > использоваться только в самом начале функций и только для проверки > аргументов которые передавал туда пользователь. Проверка аргументов > вставляется только в public функции, т.е. те которые идут в API > библиотеки. В некоторых проектах макросы обрамлены ещё и директивами > препроцессора #ifndef NDEBUG которые выключают их если код собирается > без отладочных сообщений и т.д. Но runtime ошибки могут возникать > всегда и потому они этими макросами не обрабатываются. > > Полнота этого макроса заключалась в том что он выводил место в > котором случилось безобразие и программист мог быстро найти и > поправить свой код. > > Макросы, которые занимают больше одной строки, настоятельно > рекомендуется заключать в конструкцию do { } while (0). Это позволит > избежать возможных трудно-обнаруживаемых ошибок при программировании. > И хотя в случае с макросом ptr_check() это может и не случится, в > силу его предназначения, такое обрамление всё равно нужно вставить. > > > Ну, не BLAS так не BLAS. Спецификацию я еще почитать не успел, а > > мысль, что написать, имеется. Так почему бы и нет? По мере прочтения > > спецификации можно будет и BLAS писать. > > Потому что здесь как в поговорке "назвался груздем -- полезай в > короб". Назвался BLAS-ом -- соответствуй спецификации. > > Код возврата MATRIX_DONE режет глаз, почему он не назвался MATRIX_OK? > Если у тебя есть MATRIX_DONE, то подразумевается что матрица может > быть в некотором состоянии MATRIX_BUSY, раз код возврата читается как > завершение действия. > > В программировании как и в архитектуре, нет ничего "просто так". И > оно не должно превращаться в карго-культ -- "делаем так потому что > видели что кто-то так делал, не понимая зачем". > > -- > Г.А. > > _______________________________________________ > Lab mailing list > Lab на wiki.syktsu.ru > http://wiki.syktsu.ru/cgi-bin/mailman/listinfo/lab From Lonely.RuyK на mail.ru Thu Apr 7 11:46:15 2011 From: Lonely.RuyK на mail.ru (LonelyRuyK) Date: Thu, 7 Apr 2011 11:46:15 +0400 Subject: [P&AM Lab] GOST 28147-89 In-Reply-To: <4D8B9754.5070100@komitex.ru> References: <201103242148.56459.Lonely.RuyK@mail.ru> <4D8B9754.5070100@komitex.ru> Message-ID: <201104071146.15490.Lonely.RuyK@mail.ru> Начал разбирать исходники GOST, появилась пара вопросов по макросам в macros.h. Скажите пожалуйста что такое __FILE__, \ __LINE__, \ __FUNCTION__, \ в макросе return_if_fail. В принципе то что в них содержится понятно, просто неизвесно откуда они взялись. И что такое #expr? Почему # и что это значит? И ещё вопрос по #define FALSE (0). Есть ли какой-то хитрый смысл в том что 0 в скобки взят? From rg-400 на list.ru Thu Apr 7 17:14:26 2011 From: rg-400 на list.ru (=?koi8-r?Q?=EF=C4=C9=CE=C3=CF=D7_=E5=C7=CF=D2?=) Date: Thu, 07 Apr 2011 17:14:26 +0400 Subject: [P&AM Lab] GOST 28147-89 In-Reply-To: <201104071146.15490.Lonely.RuyK@mail.ru> References: <201103242148.56459.Lonely.RuyK@mail.ru> <4D8B9754.5070100@komitex.ru> <201104071146.15490.Lonely.RuyK@mail.ru> Message-ID: <1302182066.27317.32.camel@wbook> В Чтв, 07/04/2011 в 11:46 +0400, LonelyRuyK пишет: > Начал разбирать исходники GOST, появилась пара вопросов по макросам в > macros.h. Скажите пожалуйста что такое > __FILE__, \ > __LINE__, \ > __FUNCTION__, \ > в макросе return_if_fail. > В принципе то что в них содержится понятно, просто неизвесно откуда они > взялись. > И что такое #expr? Почему # и что это значит? > > И ещё вопрос по #define FALSE (0). Есть ли какой-то хитрый смысл в том что 0 в > скобки взят? > _______________________________________________ > Lab mailing list > Lab на wiki.syktsu.ru > http://wiki.syktsu.ru/cgi-bin/mailman/listinfo/lab Мануал по препроцессору: http://gcc.gnu.org/onlinedocs/cpp/index.html __LINE__, __FUNCTION__ и т.п. - это предопределенные макросы. Т.е. ты можешь писать свои макросы, а есть еще дополнительные, о которых знает препроцессор, и ты можешь их использовать. Можно прочитать про них в разделе Standart predefined macros Про #expr. Раздел Stringification. Там вроде все понятно написано. Скобки ставят чтобы не получить непредвиденный результат. Например, если у тебя было бы выражение в макросе: #define TWO 1+1 ... TWO * TWO получишь 1+1 * 1+1 = 3 #define TWO (1+1) ... TWO * TWO получишь (1+1) * (1+1) = 4. Так что лучше уж перестраховаться и поставить лишние скобки, чем потом искать, где ошибка, так как в макрос могут передавать выражения, а в отсутствии скобок может измениться порядок выполняемых операций. #define FALSE (0); Но тут я затрудняюсь сказать, где можно накосячить, если применить его без скобок. Можно посмотреть, что получает компилятор от препроцессора используя ключ -E. From nateford на inbox.ru Fri Apr 8 20:25:50 2011 From: nateford на inbox.ru (=?KOI8-R?B?68/O09TBztTJziDuycvVzM/X?=) Date: Fri, 8 Apr 2011 20:25:50 +0400 Subject: [P&AM Lab] matrix library Message-ID: <20110408202550.5a17759b@debian> В общем, вроде бы все, что хотел сделал. Только функцию решения уравнений методом Гаусса решил попозже написать) Если у кого будут какие-нибудь мысли, чем можно дополнить - пишите. Жду критики ^^"" ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: matrix.c Type: text/x-c++src Size: 8428 bytes Desc: отсутствует URL: ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: matrix.h Type: text/x-chdr Size: 3155 bytes Desc: отсутствует URL: From sitkarev на komitex.ru Wed Apr 13 18:33:44 2011 From: sitkarev на komitex.ru (Grigoriy A. Sitkarev) Date: Wed, 13 Apr 2011 18:33:44 +0400 Subject: [P&AM Lab] libaes subversion Message-ID: <4DA5B448.9070101@komitex.ru> Приветствую всех. Можно взять с репозитория libaes и поиграться. Она пока не самая быстрая реализация, на вскидку нужно galois_mul() делать как inline это минимум. Но зато работает и я думаю что понятный довольно код получился. Есть утилита aescat с подсказкой, если кто захочет побаловаться. Успешных исследований. -- Г.А. From sitkarev на komitex.ru Tue Apr 19 00:56:51 2011 From: sitkarev на komitex.ru (Grigoriy A. Sitkarev) Date: Tue, 19 Apr 2011 00:56:51 +0400 Subject: [P&AM Lab] MD5 sources Message-ID: <4DACA593.6000602@komitex.ru> Приветствую всех. В каталог crypto/ на репозитории добавлен исходный код криптографической хеш-функции MD5. Кому интересно -- посмотрите ещё пример в main.c, можно считать контрольные суммы файлов. На мой взгляд, наша реализация самая простая -- в части касающейся дополнения блоков и финального шага алгоритма. -- Г.А. From ilyaart90 на rambler.ru Sun Apr 24 16:32:18 2011 From: ilyaart90 на rambler.ru (ilyaart90 на rambler.ru) Date: Sun, 24 Apr 2011 16:32:18 +0400 Subject: [P&AM Lab] =?windows-1251?b?6uDqIPPn7eDy/CBpcD8=?= Message-ID: <1302707373.1303648338.172671960.37452@mcgi-wr-4.rambler.ru> Всем привет! у меня есть вопрос! ситуация: у меня в руках нетбук с Ubuntu. в скором времени мне надо будет его отправить в другой город(СПБ) на дальнейшую эксплуатацию, простым пользователям, которым лучше не говорить слово "консоль". и чувствую в скором времени мне придется его админить. наверное по ssh (других вариантов не знаю). но мне нужно будет узнавать ip (который наверняка будет меняться) как это сделать не прибегая к помощи пользователя? если ответ окажется простым, то хотелось бы узнать еще как примерно это можно сделать программно (выдергивание ip и пересылка на почту ( на почту из-за того что мой ip тоже будет меняться) и что бы этот процесс осуществлялся к примеру раз в день, что б не завалило почту ) From rg-400 на list.ru Sun Apr 24 17:27:52 2011 From: rg-400 на list.ru (=?koi8-r?Q?=EF=C4=C9=CE=C3=CF=D7_=E5=C7=CF=D2?=) Date: Sun, 24 Apr 2011 17:27:52 +0400 Subject: [P&AM Lab] =?koi8-r?b?y8HLINXazsHU2CBpcD8=?= In-Reply-To: <1302707373.1303648338.172671960.37452@mcgi-wr-4.rambler.ru> References: <1302707373.1303648338.172671960.37452@mcgi-wr-4.rambler.ru> Message-ID: <1303651673.13441.8.camel@wbook> В Вск, 24/04/2011 в 16:32 +0400, ilyaart90 на rambler.ru пишет: > Всем привет! > у меня есть вопрос! > ситуация: у меня в руках нетбук с Ubuntu. в скором времени мне надо > будет его отправить в другой город(СПБ) на дальнейшую эксплуатацию, > простым пользователям, которым лучше не говорить слово "консоль". > > и чувствую в скором времени мне придется его админить. наверное по ssh > (других вариантов не знаю). но мне нужно будет узнавать ip (который > наверняка будет меняться) как это сделать не прибегая к помощи > пользователя? > > если ответ окажется простым, то хотелось бы узнать еще как примерно это > можно сделать программно (выдергивание ip и пересылка на почту ( на > почту из-за того что мой ip тоже будет меняться) и что бы этот процесс > осуществлялся к примеру раз в день, что б не завалило почту ) > > _______________________________________________ > Lab mailing list > Lab на wiki.syktsu.ru > http://wiki.syktsu.ru/cgi-bin/mailman/listinfo/lab 1)Ты пишешь не в тот раздел. 2)О каком ip идет речь? From ilyaart90 на rambler.ru Sun Apr 24 17:42:48 2011 From: ilyaart90 на rambler.ru (ilyaart90 на rambler.ru) Date: Sun, 24 Apr 2011 17:42:48 +0400 Subject: [P&AM Lab] =?windows-1251?b?6uDqIPPn7eDy/CBpcD8=?= References: <1302707373.1303648338.172671960.37452@mcgi-wr-4.rambler.ru> <1303651673.13441.8.camel@wbook> Message-ID: <143806399.1303652568.267762072.70822@mcgi-wr-20.rambler.ru> долго сомневался куда писать, но потом из за программной части решил написать сюда.( в этот раздел) речь о ip адресе машины в интернете. >1)Ты пишешь не в тот раздел. > 2)О каком ip идет речь? From rg-400 на list.ru Mon Apr 25 16:32:38 2011 From: rg-400 на list.ru (=?koi8-r?Q?=EF=C4=C9=CE=C3=CF=D7_=E5=C7=CF=D2?=) Date: Mon, 25 Apr 2011 16:32:38 +0400 Subject: [P&AM Lab] =?koi8-r?b?y8HLINXazsHU2CBpcD8=?= In-Reply-To: <143806399.1303652568.267762072.70822@mcgi-wr-20.rambler.ru> References: <1302707373.1303648338.172671960.37452@mcgi-wr-4.rambler.ru> <1303651673.13441.8.camel@wbook> <143806399.1303652568.267762072.70822@mcgi-wr-20.rambler.ru> Message-ID: <1303734758.2315.15.camel@wbook> Есть сайты, которые показывают ip. Можно скачать страничку wget`ом и вытащить из нее ip (скрипт на bash + awk, perl) или написать скрипт на python, perl. Список таких адресов можно хранить в отдельном файле. Вложил пока сырой скрипт на перле. Нужно установить пакет libmail-sender-perl. В Вск, 24/04/2011 в 17:42 +0400, ilyaart90 на rambler.ru пишет: > долго сомневался куда писать, но потом из за программной части решил > написать сюда.( в этот раздел) > > речь о ip адресе машины в интернете. > > >1)Ты пишешь не в тот раздел. > > 2)О каком ip идет речь? > > _______________________________________________ > Lab mailing list > Lab на wiki.syktsu.ru > http://wiki.syktsu.ru/cgi-bin/mailman/listinfo/lab ----------- следущая часть ----------- A non-text attachment was scrubbed... Name: mail1.pl Type: application/x-perl Size: 719 bytes Desc: отсутствует URL: From sitkarev на komitex.ru Mon Apr 25 18:22:17 2011 From: sitkarev на komitex.ru (Grigoriy A. Sitkarev) Date: Mon, 25 Apr 2011 18:22:17 +0400 Subject: [P&AM Lab] =?utf-8?b?0LrQsNC6INGD0LfQvdCw0YLRjCBpcD8=?= In-Reply-To: <1303734758.2315.15.camel@wbook> References: <1302707373.1303648338.172671960.37452@mcgi-wr-4.rambler.ru> <1303651673.13441.8.camel@wbook> <143806399.1303652568.267762072.70822@mcgi-wr-20.rambler.ru> <1303734758.2315.15.camel@wbook> Message-ID: <4DB58399.6090601@komitex.ru> Мне кажется что здесь речь идёт об удалённом администрировании машины которая будет подключаться с динамическим IP. Нужен доступ к этой машине через SSH, и потому нужно знать её адрес. Здесь на мой взгляд только один вариант выглядит более-менее прилично. Это использование динамического DNS куда регистрируется эта машина. Можно поднимать свой а можно пользоваться публичными сервисами типа DynDNS.org. Тогда ssh будет ходить через доменное имя а не адрес, а имя будет постоянным и не изменится. Это большой плюс -- никаких доделок в стандартных утилитах или скриптах делать не нужно. Пользуемся обычным доменным именем хоста и всё. Клиент DynDNS для debian есть в пакетах между прочим. Прочие штуки на мой взгляд извращение хотя и будут работать. Письмо действительно следовало послать в networking. -- Г.А. 25.04.2011 16:32, Одинцов Егор пишет: > Есть сайты, которые показывают ip. > > Можно скачать страничку wget`ом и вытащить из нее ip (скрипт на bash + > awk, perl) или написать скрипт на python, perl. > > Список таких адресов можно хранить в отдельном файле. > > Вложил пока сырой скрипт на перле. > Нужно установить пакет libmail-sender-perl. From sitkarev на komitex.ru Mon Apr 25 21:51:27 2011 From: sitkarev на komitex.ru (Grigoriy A. Sitkarev) Date: Mon, 25 Apr 2011 21:51:27 +0400 Subject: [P&AM Lab] whirlpool hash Message-ID: <4DB5B49F.3030900@komitex.ru> Приветствую всех. На выходных помер блок питания у ноутбука так что добавить код whirlpool смог только сегодня. Кому интересно -- смотрите проект crypto на сервере subversion. На мой взгляд наша реализация проще чем "родная" reference implementation. Описание алгоритма есть на сайте разработчиков: http://www.larc.usp.br/~pbarreto/WhirlpoolPage.html. На русской wikipedia хороший перевод этого описания есть в сокращённом виде, и статья в целом лучше чем английский вариант. Удачных экспериментов. -- Г.А. From sitkarev на komitex.ru Thu Apr 28 18:54:18 2011 From: sitkarev на komitex.ru (Grigoriy A. Sitkarev) Date: Thu, 28 Apr 2011 18:54:18 +0400 Subject: [P&AM Lab] =?utf-8?b?0J7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Ri9C5INCy?= =?utf-8?b?0L7Qv9GA0L7RgSAtLSAzMC3QtSDQsNC/0YDQtdC70Y8=?= Message-ID: <4DB97F9A.3080008@komitex.ru> Приветствую всех. Что мы будем делать 30-го апреля? Если большинство уезжает на выходные может быть есть смысл отложить занятия? -- Г.А.