- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
using System;
using System.Security.Cryptography;
namespace sha1_calc
{
class Program
{
static void Main(string[] args)
{
SHA1 sha = new SHA1CryptoServiceProvider();
foreach (var fname in args)
{
Console.WriteLine("file: " + fname);
try
{
System.IO.FileStream fs = System.IO.File.Create(fname);
byte [] res = sha.ComputeHash(fs);
fs.Close();
Console.Write("0x");
foreach (var i in res)
{
Console.Write(i.ToString("X"));
}
Console.WriteLine();
Console.WriteLine("---------------------------------");
}
catch(Exception e)
{
Console.WriteLine("error: " + e);
}
}
Console.ReadKey();
}
}
}
Скачал парочку образов и решил проверить их чексуммы. Протестировал программу на скачанных файлах. Удивился, почему же у них хеши одинаковые?
1) Изобрести проблему.
2) Самолично решить проблему не самым очевидным способом.
Я так понимаю, скачанные файлы пришлось скачивать заново...
Из скрипта - проверю код возврата.
Из консоли - так она на stderr валит ошибки.
Что тебе не нравится, guest?
P.S. Более годный вброс по поводу *sum звучит так: "а считать sha1 от файлов в подкаталогах ты как собираешься?".
P.P.S. Или ты о том, что приведенная мной команда генерит чексуммы а не сверяет их? Тогда открой для себя опцию -c.
Файлы можно и самому искать, потери скорости при этом не будет.
>Я в курсе, кэп. Я просто говорил, что вброс об этом был бы лучше вброса об обработке ошибок.
Лучше - так вбрось. Я спросил то, что мне показалось важнее.
Теперь уже не интересно. Ты же уже написал, как эта проблема решается, а я согласился с данным решением.
> Я спросил то, что мне показалось важнее.
Ок.
> Какие ошибки ты собираешься показывать пользователю? Как ты собираешься показывать прогресс?
ОП'у надо было проверить файлы, а не писать мегаполезную тулзу с прогрессом и шлюхами. Эта вполне конкретная задача решается вполне конкретной командой sha1sum -c checksums. И я не думаю, что выхлоп этой команды кому-то окажется непонятным.
Естественно, если бы я надумал писать гуишную прогу для сверки хешей (а я никогда не надумаю ее писать, т.к. мне это нахуй не нужно, для насущных целей мне всегда хватало и консольной, задача унылая и не интересная, и платить мне за нее явно никто не будет), то я бы не пользовался бекендом в виде *sum, а воспользовался бы какой-нибудь вменяемой криптобиблиотечкой, которой можно скармливать поток кусками, а не целиком (ну или, как вариант, есть колбеки о прогрессе расчета).
Ну я же написал, что "я бы не пользовался бекендом в виде *sum, а воспользовался бы какой-нибудь вменяемой криптобиблиотечкой, которой можно скармливать поток кусками, а не целиком (ну или, как вариант, есть колбеки о прогрессе расчета)". Для чего, по-твоему, мне нужна загрузка кусками или колбек? А нужна она именно для индикации прогресса.
> А ты хочешь проверять файл на пару терабайт молча
Да, лично меня, (а не абстрактных юзеров моей ненаписанной сверялки сумм) такое поведение никогда не бесило.
Ты имел в виду, что если я напишу программу так, что она будет удобна не только для меня, но и для кого-то еще, то она не будет говнокодом? Ну да, в этом что-то есть. И этой мысли не хватает многим авторам опенсурсных программ.
А юзабилити и швабодка - вечная тема для холиваров, причем юзабилити как для юзеров, так и для программеров (в частности, в апинсорсе никогда не бывает коментов к апи, если не брать стандартные библиотеки языков).
Из того, что((нет рюшечек для юзера) или (нет комментариев) или (переменные называются А, В, С)) не следует что код - говнокод.
если переменные называются не A,B,C, и есть комментарии то код может быть как говнокодом, так и годнокодом
Сие я хотел сказать)
Ты можешь посмотреть кто что открыл, какая тулза тянет ИО(iotop) и т.п. - в кедах это можно даже в гуйне поглядеть.
Ты путаешь домохозяек и юзеров, поэтому не путай.
Спасибо, что ты об этом рассказал, буду знать, что ты настолько крут, что всякой хуйней не занимаешься.
Да не, хуйней позаниматься можно, если она интересная или за нее платят. Но кому нужна очередная унылая сверялка сумм, коих и без меня полным-полно?
Да легко: pv ubuntu.iso | sha1sum
Выглядит примерно так:
Я в курсе, кэп. Я просто говорил, что вброс об этом был бы лучше вброса об обработке ошибок.
А родителя можно показывать как на бордах, во всплывающем диве при наведении на ссылку на него.
Для последних коментов есть сток, он только работает хуево.
Да вот в стоке не последние комменты, к сожалению. Там один коммент на тред ;(
На мой взгляд удобнее было бы по клику выполнять скроллинг на комментарий, чтобы страница не обновлялась. Возможно, даже с эффектом подмигивания преамбулы комментария. Так будет виден весь контекст.
А чтобы можно было вернуться, показывать ссылки не только на родителя, но и на потомков в разворачивающемся по клику списке.
Зайди на двощ и протестируй.
>преамбулы
Это типа родитель? А что если он не помещается на экране?
Видел. Неюзабельно.
> А что если он не помещается на экране?
Можно сделать прокрутку по клику же.
Да ты охуел. Ну давай, предложи лучше.
>Можно сделать прокрутку по клику же.
Как на хабре?
Мне кажется, например, что «вилка вниз» неинтуитивно работает.
Есть такое. А если добавить кнопку для сворачивания всех деревьев потомков, так чтобы под данным комментарием оставались видимыми только корни этих деревьев?
В линейном такой херни нет. Да и там легко отложить тред на "почитать потом", постранично.
Дискуссии не такие разветвлённые получаются, но как по мне, это только плюс.
Как определять, что куда относится? Ссылки на родителя и на потомков.
Да и потом существуют компромиссные схемы с отображением двух уровней:
1. Корневые комментарии.
2. Ответы на корневые и ответы на ответы.
Примеры в действии:
А. http://holywars.ru/comments/653
Б. http://stackoverflow.com/questions/14589346/
Вроде и лесенки нет, и ветвление делать можно.
Первый, кто скажет съебнуть на лор - хуй.
Там просто в заголовке комментария есть ссылка на пост, на который отвечаешь, и можно удобно прыгать туда-сюда.
SO ни в жопу ни в пизду, коменты там очень неудобные и ссылка на автора не для этого. Ответы на ответы там линейные, да и формат ресурса не тот. Холиварс вообще непонятно зачем.
Примерная демонстрация:
P.S. Этот код не борется с
Если надо скруглить уголки у каждой третьей дивки, содержащей ровно две зелёные кнопки, и всё это на странице, которую я вижу на сайте незнакомого дяди, то да.
Во-первых, тот кусок кода был написан лишь для того, чтобы каждый желающий мог выполнить его в консоли своего браузера (это не было предложением вставить код на страницу для администрации ГК) и понять, о чём я говорю. Прошу прощения, если он не оказался кроссбраузерным.
Во-вторых, я не в силах выразить в CSS условия "у ul есть <= 1 детей li" и "у ul есть > 1 детей li". Не стоит говорить и о полном условии "у ul есть <= 1 детей li и этот ul находится внутри ul, у которого есть только один ребёнок li".
К тому же, надо будет переписать условия прекращения отступов, которое станет зависеть от содержимого дерева комментариев. Либо понижать вложенность не отступами, а перемещением нужных элементов внутри DOM.
В общем, решать вопрос следует либо на сервере, либо долго думать над CSS. Для всего остального есть JS.
гм
Протестировал программу на скачанных файлах.
P.S. Я пояснял guest'у почему fs.Close() в строке не достаточно. А про то, что в одноразовом коде на все это насрать - полностью согласен.
Заходите к нам:
freepc-games.ru