- 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
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
class OutSplitter(object):
""" splitter """
def __init__(self, out_splitter):
self.__pipes=None
if isinstance(out_splitter, OutSplitter):
self.__pipes = Set(out_splitter.pipes)
elif out_splitter:
if hasattr(out_splitter,"__iter__") : #
for pn in out_splitter:
self.add_pipe(pn)
else:
self.add_pipe(out_splitter)
@property
def pipes(self):
return self.__pipes
def add_pipe(self, pn):
if isinstance(pn, basestring):
if pn == 'stderr': x = sys.stderr
elif pn == 'stdout': x = sys.stdout
else:
p = os.path.dirname(pn)
if p and not os.path.exists(p):
os.makedirs(p)
x = open(pn,'w+')
else: x = pn
if hasattr(x, 'write') and hasattr(x, 'flush'):
if self.__pipes is None:
self.__pipes=Set()
self.__pipes.add(x)
def write(self,s):
if self.__pipes:
for p in self.__pipes:
p.write(s)
def flush(self):
if self.__pipes:
for p in self.__pipes:
p.flush()
class CatalogsWalker(OutSplitter):
def __init__(self,catalogs,out_splitter=None):
OutSplitter.__init__(self,out_splitter)
self.__catalogs = catalogs
self.__file_counter, self.__catalog_counter, self.__start_time, self.__speed = 0, 0, 0, 0
def __iter__(self):
self.__file_counter, self.__catalog_counter, self.__start_time, self.__speed = 0, 0, 0, 0
self.__start_time=time.time()
for catalog in self.__catalogs:
for p,d,ns in os.walk(catalog):
_ = d;
self.__catalog_counter+=1
for n in ns:
self.__file_counter+=1
self.__speed=self.__file_counter/(time.time()-self.__start_time)
self.fanny_indicator(self.__catalog_counter, self.__file_counter, self.__speed)
yield p,n
@property
def catalog_counter(self):
return self.__catalog_counter
@property
def file_counter(self):
return self.__file_counter
@property
def start_time(self):
return self.__start_time
@property
def speed(self):
return self.__speed
def fanny_indicator(self,p,n,s):
if self.pipes:
_result="\rcataloges:" + repr(p).rjust(8) + "\tfiles:" + repr(n).rjust(13) + "\tspeed: %12.3f"%s + " files/s"
self.write(_result)
self.flush()
apgurman 26.11.2014 12:14 # 0
guest 26.11.2014 21:51 # 0
Что хорошего в этой помойке? Кстати, там парсер ббкодов нормально заработал?
Анонимус 26.11.2014 22:03 # 0
Один такой долгое время читал маны по мускулю на mysql.ru в переводе отечественных быдловебкодеров
guest 26.11.2014 23:07 # 0
apgurman 27.11.2014 00:42 # +1
guest 28.11.2014 14:32 # +1
Я не преклоняюсь перед иностранным, но аналога, например, stackexchange/stackoverflow, где можно перевести вопрос на simple english и получить нормальный ответ, в рунете просто нет. И еще очень много чего нет.
guest 28.11.2014 14:39 # 0
bormand 28.11.2014 15:02 # 0
Что-то мне намекает, что их нет и в дойчнете, и у французов нет, и у японцев с китайцами нет...
guest 28.11.2014 15:37 # 0
guest 28.11.2014 15:40 # 0
В смысле перевести, вбить в гугл и получить ссылку на SE. Как форум ресурс - говно.
apgurman 27.11.2014 00:37 # 0
guest 28.11.2014 14:33 # 0
guest 28.11.2014 15:39 # +1
roman-kashitsyn 26.11.2014 12:19 # +5
apgurman 27.11.2014 00:48 # −1
apgurman 27.11.2014 00:49 # 0
Анонимус 27.11.2014 01:31 # +2
2. в чем смысл этого кода? В тулзе которая обходит папки и считает время? Вы пайтон изучаете?
3. "fanny" -- вентиляторный? Или Каплан? Любить нужно русский язык, как Вы верно заметили, а вот английский программисту не плохо бы знать.
4. Интерфейс у fanny невнятный и magic numbers внутри
5. Вместо проверки на write и flush, лучше юзать ABCMeta. Это же как-бы API, считается что некто может разработать новый пайп (для писания в TCP сокет видимо, или в лог по syslog), так что утка тут не нужна.
6. Вообще есть io.IOBase, так что всё выглядит немного велосипедом
7. Зачем вокер наследник аутпутсплитера? Хождение по папкам -- частный случай писания в пайп? Тут классическая ошибка ООП проектирования: использование наследования для реюзания кода. По факту же нужда _ДЕЛЕГАЦИЯ_. Передавайте вокера (а еще точнее лист io.IOBaseов) в ваш вокер
8. и фанни свой тоже сделайте ABCMeta, и назовите его Reporter, и сделайте у него нормальный интерфейс (например метод add_progress), чтоб не завязываться именно на текстовый аутпут. А если завтра нужно будет через Tk в GUI результат выводить? Пусть вокер получает Reporter, а реализация репортера (TextReporter) получает стрим (в нашем случае stdout какой-знить или файл).
9. И следующий раз начинайте всё таки с бизнес-задачи, потому что не очень понятно зачем вообще всё это
Анонимус 27.11.2014 01:40 # 0
apgurman 27.11.2014 03:01 # 0
И иногда там наверху перед тем как делать кучу работы(например сортировки перед в каком-нибудь too_funny_print) я проверяю например if out_splitter.pipes is None:
Какой смысл что-то там сортировать для вывода, если выводить некуда?
В Вашем врианте эта проверка дороже, делать ее все же стоит. Но все равно спасибо и я еще подумаю на эту тему.
Анонимус 27.11.2014 12:02 # 0
Если профилирование программы (с помощью cProfile например) не доказало что это сортировка занимает 80% времени и является боттлнеком, то лучше все таки писать меньше букв и не думать о цене сортировки
apgurman 27.11.2014 12:18 # 0
Тем не менее я Вам, Анонимус, очень благодарен за очень конструктивную критику. И надеюсь что покритикуете еще когда я все перепишу "по уму"
Анонимус 27.11.2014 12:21 # +1
apgurman 27.11.2014 12:28 # 0
О производительности следующий пост
defecate-plusplus 27.11.2014 12:31 # 0
roman-kashitsyn 27.11.2014 12:37 # +1
Они сложнее, но сложности эти созданы на ровном месте.
Я уже всем сердцем ненавижу сишный клиент зукипера - течёт как сито и рейс-кондишены вылезают в самый неподходящий момент.
apgurman 27.11.2014 12:52 # 0
defecate-plusplus 27.11.2014 13:02 # 0
которые скс прокладывают?
Анонимус 27.11.2014 13:04 # 0
apgurman 27.11.2014 13:13 # 0
roman-kashitsyn 27.11.2014 13:15 # 0
В мире кроме ядер очень много всего, связанного с сетями.
apgurman 27.11.2014 13:19 # 0
guest 28.11.2014 14:38 # 0
apgurman 27.11.2014 13:22 # 0
defecate-plusplus 27.11.2014 13:32 # 0
что никак не мешает, если надо, запилить свой однонодовый веб-сервер на с++ с отличными показателями производительности ценой, скажем, 200 строк кода
то, что ты перечислил, не имеет сложной бизнес-логики
т.к. программы на сишке проще, чем на с++
попробуй на сишке написать опенофис
apgurman 27.11.2014 13:46 # 0
Опенофис не писал на си Но сложнейшую скада-систему с графикой и многопоточностью под еще под DOS!!! писал на asm 8086.
defecate-plusplus 27.11.2014 13:52 # 0
причем тут то, какой процент работы берёт на себя ядро?
речь о том, как решаются одинаковые бизнес-задачи на как бы разных языках, где с++ выступает в роли говна, а С в роли спасителя
> и многопоточностью под еще под DOS на asm 8086
напрашивается логичный вывод - программки на асм короче программок на С
apgurman 27.11.2014 14:01 # 0
apgurman 27.11.2014 14:10 # 0
defecate-plusplus 27.11.2014 14:24 # 0
охохо пошли реальные цифры из сишных проектов в 10к файлов на один процесс?
кстати, каюсь
ни разу не пришлось менять аллокатор
почему-то на стандартном всё устраивало
проблемы сетевиков?
roman-kashitsyn 27.11.2014 14:27 # 0
Если в линупсячем ядре захочется поменять настройки аллокации в какой-то подсистеме, нужно будет также пройтись по всем вызовам и подправить флажки.
apgurman 27.11.2014 21:14 # 0
apgurman 27.11.2014 21:11 # 0
apgurman 27.11.2014 14:18 # 0
roman-kashitsyn 27.11.2014 14:31 # 0
процедурное?
apgurman 27.11.2014 21:16 # 0
defecate-plusplus 27.11.2014 14:36 # 0
ООП - это нормально
в любом хорошем сишном проекте есть ООП
где сущности выделены в своих структурах со своими данными, где есть место абстракции и полиморфизму, даже виртуальным методам
просто вместо сахарка это всё приходится делать руками, всё руками
apgurman 27.11.2014 22:30 # 0
bormand 27.11.2014 22:35 # 0
Yes, you must write more code in class implementation (once). But you'll have less code when using that class (many times).
apgurman 27.11.2014 23:44 # 0
В чем разница с написанием и использованием библиотек при процедурном программировании? Ну кроме субъективного мнения "так нагладнее и удобнее"
guest 28.11.2014 15:42 # 0
Который по нормалу генерирует IDE.
Анонимус 27.11.2014 16:55 # 0
Расскажите пожалуйста, что Вы подразумеваете под "многопоточностью" тут, и как это было реализовано? Через прерывания?
apgurman 27.11.2014 21:52 # 0
Анонимус, я Вас понимаю, и Вы правы. В современных понятиях это многопоточностью трудно назвать. Но тогда почти 25 лет назад под DOS мало кто использовал слово thread. Я и мое окружение его даже не знало. Называли мы это многопоточностью. И в какой-то мере оно так и было. В современных понятиях это больше multithreading или может быть "просто параллельное исполнение" или его эмуляция. Использовали и прерывания (по таймеру в том числе) и "шитый код". https://en.wikipedia.org/wiki/Threaded_code.
Анонимус 28.11.2014 01:32 # 0
Можно сделать кооперативную многозадачность на одном процессоре на одном процессе на одном потоке бесконечным евент-лупом (asyncio в пайтоне так работает). Можно сделать по таймеру с прерыванием, можно еще как-то)
apgurman 28.11.2014 04:15 # 0
Анонимус 27.11.2014 13:01 # 0
И течку памятью (ну точнее распухание кучи до OutOfMemory) я тоже встречал)
Так что виноват тут не си)
guest 28.11.2014 15:43 # 0
roman-kashitsyn 28.11.2014 15:45 # 0
Сегфолт прекрасно обрабатывается. Нужно только включить генерацию coredump-ов. Открываешь корку в дебаггере, смотришь состояния всех тредов.
guest 28.11.2014 15:47 # 0
Анонимус 28.11.2014 15:52 # 0
guest 28.11.2014 15:53 # 0
Анонимус 28.11.2014 15:54 # 0
guest 28.11.2014 15:56 # 0
>В джаве
Как?
Анонимус 28.11.2014 15:57 # +1
В коммерческом софте именно так и делают. А еще и скрамблят гады, чтоб никто не расковырял.
--------
А еще может быть -XX:-OmitStackTraceInFastThrow
guest 28.11.2014 15:59 # 0
Кстати, софт на жаве же один хрен декомпилируется 1 в 1,если не обфусцировать?
Анонимус 28.11.2014 16:05 # 0
Unknown Source. Добавьте к этому обфускацию и будет x(Unknown Source). Очень удобно.
------
не 1 в 1, но достаточно чтоб можно было прочитать и понять.
guest 28.11.2014 16:23 # 0
>не 1 в 1, но достаточно чтоб можно было прочитать и понять.
А зачем тогда это делать?
Анонимус 28.11.2014 16:38 # 0
2) делать что? Обфусцировать код?
Чтоб враг не получил читаемый компилируемый исходник твоего продутка
guest 28.11.2014 16:53 # 0
Анонимус 28.11.2014 16:58 # 0
bormand 28.11.2014 16:40 # 0
Обфускаторы же маппинг имен сохраняют в файлик. По крайней мере жабий ProGuard так делал.
Анонимус 28.11.2014 16:41 # 0
Но -g:none, один хрен, усложнит разбирательство
bormand 28.11.2014 16:28 # 0
Отправить core dump разрабу (это можно даже на автомате замутить, в духе "отправить отчет об ошибке"). Жопа в том, что корка может весить несколько гигов и содержать какую-нибудь конфиденциальную инфу.
Анонимус 28.11.2014 16:37 # 0
dr.watson же))
http://www.panoramafactory.com/drwtsn32.gif
guest 28.11.2014 16:54 # 0
Что это? Где его брать?
Анонимус 28.11.2014 16:59 # 0
В линухах у многих дистрибов включен дампинг через ulimits
guest 28.11.2014 17:04 # 0
Винды, что ли? :)
>ничего делать не надо.
Анонимус 28.11.2014 17:07 # 0
Отчет об ошибке отправляется с помощью службы Windows Error Reporting на специальный сервер Microsoft, где все отчеты сортируются и хранятся в централизованной базе данных. Для того, чтобы получить доступ к отчетам для конкретного приложения, разработчику нужно зарегистрироваться на сервере Microsoft, после чего он получает возможность анализировать отчеты об ошибках.
guest 28.11.2014 17:12 # 0
Анонимус 28.11.2014 17:13 # 0
guest 29.11.2014 19:40 # 0
wvxvw 29.11.2014 02:40 # 0
Анонимус 28.11.2014 15:50 # 0
----
да и всякие seh есть: можно зарепортить же
apgurman 27.11.2014 12:42 # 0
roman-kashitsyn 27.11.2014 12:44 # +2
Инфа 146%?
Пишут. Гораздо больше, чем вы можете себе представить.
apgurman 27.11.2014 12:50 # 0
roman-kashitsyn 27.11.2014 13:12 # 0
Почему? Откуда инфа? Кто собирал статистику? У меня тут несколько миллионов строк кода на с++ под боком, многое так или иначе связано с сетью.
Так откуда инфа? Кто собирал статистику? Это по опенсорс проектам или по закрытым тоже?
apgurman 27.11.2014 13:52 # 0
defecate-plusplus 27.11.2014 13:57 # 0
а можно писать что-то другое, чем GUI-Network-Administrator, можно?
bormand 27.11.2014 14:07 # 0
Потому что кому-то было влом делать публичное апи для нетлинка с фаерволом и роутером... Единственный документированный способ - дергать iptables/ip/ifconfig. У меня был депресняк, когда я это узнал... Пришлось клеить строки и exec'ом вызывать тулзы...
roman-kashitsyn 27.11.2014 14:35 # 0
Риальным сетевикам не до этого.
Анонимус 27.11.2014 15:16 # 0
но может быть нетфильтра, например?
В остальном Вы правы: говняшка -- тут:
http://www.netfilter.org/documentation/FAQ/netfilter-faq-4.html#ss4.5
bormand 27.11.2014 16:27 # 0
man 7 netlink
Емнип, все эти iptables/ip/ifconfig общаются с ядром именно через netlink. Но протоколы там не документированные, а в доке явно сказано - exec'айте iptables, а к netlink'у не лезьте, он не для вас... Понятно, что они оставляют себе пространство для манёвра. Но всё-равно как-то неприятно.
Анонимус 27.11.2014 16:30 # 0
bormand 27.11.2014 16:33 # 0
Ну да, это я и имел в виду.
Ну ок, пусть эти ядерные протоколы будут деталью реализации... Но почему нельзя было вместе с тулзами приложить какой-нибудь libiptables - ума не приложу :(
Анонимус 27.11.2014 16:35 # 0
4.5 Is there an C/C++ API for adding/removing rules?
The answer unfortunately is: No.
Now you might think 'but what about libiptc?'. As has been pointed out numerous times on the mailinglist(s), libiptc was _NEVER_ meant to be used as a public interface. We don't guarantee a stable interface, and it is planned to remove it in the next incarnation of linux packet filtering. libiptc is way too low-layer to be used reasonably anyway.
We are well aware that there is a fundamental lack for such an API, and we are working on improving that situation. Until then, it is recommended to either use system() or open a pipe into stdin of iptables-restore. The latter will give you a way better performance.
bormand 27.11.2014 16:42 # 0
Да читал я ее тогда... Вот как раз о ней:
>> Единственный документированный способ - дергать iptables/ip/ifconfig. У меня был депресняк, когда я это узнал...
Анонимус 27.11.2014 16:46 # 0
Одно время линуксоиды смеялись над виндой где часто было только 2 способа сделать что-то: через гуи/mmc (тоесть никак не автоматизировано) или через Win32API, тоесть совсем низкоуровнево.
Были правда COM и WMI, но почему-то не все про это знали.
Потом MS понял что всё плохо, и теперь cmdlet (API для пауершелла) -- мастхев для любого MS продукта.
Ну а линуксоиды говорили что у нас-то консоль ферст класс ситизен, так что у нас всегда будет возможность что-то автоматизировать посредством шелл скриптов. Ну вот иногда посредством ТОЛЬКО шелл скриптов.
guest 28.11.2014 17:14 # 0
Анонимус 28.11.2014 17:19 # 0
guest 28.11.2014 18:43 # 0
Анонимус 28.11.2014 21:16 # 0
Разумеется есть хорошие лиунксоиды а есть идиоты которые орут "винда мастдай" на всех форумах. Сам линукс тут не виноват)
LispGovno 28.11.2014 21:19 # 0
http://freelansim.ru/tasks/93023
> Написать новый шаблон для робочого интернет-магазина
Анонимус 28.11.2014 21:23 # 0
Ну там же написано "Киев":) Товарищ україномовний видимо.
Кстати, там "Joomla" же, причем тут Microsoft?
LispGovno 28.11.2014 22:00 # 0
Свой закас пропиарил.
guest 29.11.2014 01:05 # 0
1024-- 29.11.2014 09:01 # 0
Честно говоря, луниксоидам надо по-свойски разобраться с кулхацкерами, которые говорят "только линупс, венды - говно!" Тогда они отмоются от дурной славы пердоликов-сектантов, никто ни с кем не будет воевать, систему бросится дорабатывать толпа народа, допилит недопиленное, заставит M$ задуматься, из-за чего Windows 11 будет просто волшебной. В итоге все будут в плюсе, кроме маководов, у которых уже сейчас всё работает и стремиться в общем-то не к чему.
apgurman 29.11.2014 12:55 # 0
1024-- 29.11.2014 22:21 # −1
guest 29.11.2014 22:56 # +1
Анонимус 30.11.2014 20:05 # 0
1024-- 01.12.2014 08:50 # 0
Меня просто очень сильно поразили продуманные и нерушимые аргументы apgurman'а. Отвечать "Windows - рулит, Linux - отстой" не хотелось - всё же обе ОС нужны и бывают полезны. И я выбрал самый адекватный ответ из возможных.
И только потом я увидел http://joyreactor.cc/post/1679199
apgurman 02.12.2014 12:39 # 0
>> Меня просто очень сильно поразили продуманные и нерушимые аргументы apgurman'а.
Вовсе и непродуманный и не нерушимый и уж точно не аргумент. Наоборот, я хотел подчеркнуть глупость споров на эту тему и просил их прекратить здесь. Тем более пост вообще не об этом
guest 29.11.2014 15:54 # 0
Новый iDildo же вышел, в 2 раза больше предыдущего.
1024-- 29.11.2014 22:20 # 0
Прошу прощения, я-то наивно полагал, что они уже достигли идеала. А выходит, всегда есть куда расти. Буду знать.
Анонимус 30.11.2014 21:11 # +1
3.14159265 01.12.2014 13:21 # +1
Браузер у них как был говном, так и остался.
Анонимус 30.11.2014 21:03 # 0
Так что бывает и такое, да) В целом же это чушь всё.
guest 01.12.2014 13:35 # 0
Анонимус 01.12.2014 17:54 # 0
Не нужно ходить на ЛОР и дискутировать там с девятиклассниками в терминах "виндус сукс"
guest 01.12.2014 20:06 # 0
Анонимус 01.12.2014 20:08 # 0
што?
guest 01.12.2014 20:17 # 0
Анонимус 01.12.2014 20:19 # +2
Программками, которые хуй проссыш как под виндой запустить.
Программками, которые хуй проссыш как под досом запустить.
Программками, которые хуй проссыш как под линуксом запустить.
Программками, которые хуй проссыш как под опенбзд запустить.
Программками, которые хуй проссыш как под нетбзд запустить.
Программками, которые хуй проссыш как под фрибзд запустить.
Программками, которые хуй проссыш как под МакосьКлассик запустить.
Программками, которые хуй проссыш как под МакосьИкс запустить.
Программками, которые хуй проссыш как под ОС/2 запустить.
Программками, которые хуй проссыш как под OS/360 запустить.
Программками, которые хуй проссыш как под TR-DOS запустить.
Программками, которые хуй проссыш как под QNX запустить.
Программками, которые хуй проссыш как под VMS запустить.
Программками, которые хуй проссыш как под Solaris запустить.
guest 01.12.2014 20:48 # 0
inkanus-gray 01.12.2014 19:12 # 0
Питон — это же какая-то старая досовская программа, если я не ошибаюсь, так?
Анонимус 01.12.2014 19:27 # +1
Кстати, Вы даже не представляете под какие машины питон портировали:
http://upload.wikimedia.org/wikipedia/commons/thumb/b/b2/Foton.jpg/220px-Foton.jpg
inkanus-gray 01.12.2014 19:28 # 0
3.14159265 01.12.2014 13:23 # 0
Зачем Вы разговариваете с Копипаста:Руслан_Карманов ?
Руслан Карманов — унылый быдлотролль, обливающий говном красноглазых в своем уютненьком бложике. Какое-то время был весьма популярным персонажем в /s/. В последнее время активно подражает Гоблину. Эталонное копирастическое быдло из международной палаты мер и весов.
Отличается зашкаливающей ненавистью к открытому ПО и линуксу.
Руслан Карманов — это не только фабрика лулзов, но и отец сомнительного мема — Бога Питуха, который был немедленно подхвачен /s/ тиреча.
guest 01.12.2014 13:36 # 0
3.14159265 01.12.2014 13:54 # 0
Хомячок Карманова?
>Батхерт незаметен.
Угу. Вижу как он незаметен, когда немножко питушиного гуру присрамили.
guest 01.12.2014 17:36 # 0
Кто его присрамил-то? Написали "Карман хуй" и залочили статью? Охуенно присрамили, да. Ну а сейчас он ударился в политику и скатился в УГ, а старый блог просрал.
Анонимус 01.12.2014 18:57 # +1
guest 01.12.2014 20:05 # 0
guest 28.11.2014 15:44 # 0
Анонимус 27.11.2014 12:56 # 0
Процедурный и ООП подходы имеют как минусы, так и плюсы.
Кроме того качественный процедурный подход имеет *некоторые* плюсы объектного: например Вы получаете handle какого-то объекта в памяти ядра (ну окей, какой-то структуры) и потом с этим хендлом везде ходите.
Виндовый API не стесняясь говорит про объекты в этом случае (там даже object manager есть) хотя это и чистый си.
Чем ниже уровень, тем больше скорость и место превалируют над выразительностью языка (и именно потому на высокоуровневом пайтоне красота важнее скорости), так что логично встретить в ядре си (тем более что API ядра в любом случае сишным должен быть).
Кроме того ООП помогает быстрее строить и поддерживать и изменять системы с огромным количеством не очень технических понятий: например интерпрайз. Сама мысль о том что код находится рядом с данными крайне полезна для инкапсуляции мелких вычислений типа user.findBoss().calculateSalary() итд. Код ядра ОЧЕНЬ далек от ентерпрайза, так что сравнивать его бессмыслено.
Другой такой пример это GUI фреймоврки, которые на ООП намного проще описываются (ибо паттерны bridge, wrapper итд)
Я не видел исходники QNX, так что про реал тайм мне говорить сложно. Обычный десктопный линух все же не реалтайм обычно.
apgurman 27.11.2014 13:07 # 0
"real-time" в кавычках в смысле не реал-тайм, а в смысле "там где скорость действительно имеет значение".
QNX не написан объектно.
Современные коды на С действительно более выразительны и часто близки к некоторым правилам ООП и кстати очень читабельны.
Я знаю один случай, когда то, что можно было решить для С кода, никак не решалось для C++, ну если конечно его не переписать с нуля. Это я к тому, что чем выше уровень языка, тем проще(в смысле быстрее) на нем писать, проще потом читать написанное, но тажелее выразиться более точно и правильно.
defecate-plusplus 27.11.2014 13:13 # 0
компилятор с++ не смог скомпилировать сишный код, потому что кто-то очень умный решил использовать с11?
apgurman 27.11.2014 13:54 # 0
apgurman 27.11.2014 12:25 # 0
Мой первый набросок этой утилиты был в истинно python(овском) стиле Написал за час, но потом почти час ждал пока он(набросок) прошерстит 40GB фоток на внешней флешке. Для сравнения представленная для критики версия справлялась уже за единицы минут.
apgurman 27.11.2014 02:21 # 0
Именно этого и хотелось.
1 Он мне нужен для других проектов и поэтому уже под рукой.
2 Смысл именно этого куска кода. иметь готовый класс, для обхода списка папок, без общего roota или просто папки, которая еще умеет выдавать данные, в первую очередь о том что она что-то там делает и как она быстро это делает в совокупности с остальным кодом. А осталпеpoisk-nedostayuschih-fajlov-/.
3 Спасибо за замечание. Это просто опечатка. Не буду сравнивать мой и Ваш английский. Не благодарное это дело, тем более это же Вы нашли эту ошибку. Мы здесь больше про Python говорим.
4 def funny_indicator(self, catalogs_cntr, files_cntr, speed_or_files_per_sec): Так было бы лучше?
5 Я поизучаю этот вопрос.
6 Это обертка к велосипеду. То что было "in top of my head" на момент когда я это быстро писал. Спасибо, это тоже тема для раздумий.
7 Может Вы и правы, но это же особенный worker? Он же еще и funny_indicator? Думаю что здесь Вы больше правы, чем я.
8 И здесь Вы правы. В оправдание могу только сказать, что изнвчально я хотел написать эту утилитку за 30 мин и уж точно не думал про GUI. Изначально это просто удобная утилита. Благодаря Вам в следующей версии подумаю.
9 В моем первом комменте и в этом я указал ссылку на описание откуда это и зачем нужно. На этом ресурсе все это не влезает, а на том, куда ссылка, никого нет и никто ничего не обсуждает.
bormand 27.11.2014 07:28 # +2
Всё гораааздо страшнее, анон... https://translate.google.com/#en/ru/fanny
inkanus-gray 27.11.2014 07:34 # +1
Так вот от какого слова произошло название awk!
1024-- 27.11.2014 07:50 # +1
На funnycode останутся олдфаги и интересные холивары, а на fannycode перенесут творения новостников и переводчиков Конардо и посты про модные гаджеты про даты в PHP и прочих языках.
bormand 27.11.2014 07:52 # 0
1024-- 27.11.2014 08:08 # 0
Выпилены (на волан-де-сайт-2) космос, физика, научнопопулярная питушня, законы и железо.
bormand 27.11.2014 08:32 # 0
Обсуждение музыки и аниме фильмов?
Кстати, а DIY куда попал?
1024-- 27.11.2014 08:41 # 0
Работа с ...
> DIY
Хм, недовыветрили его, оказывается. Стал непрофильным на вдс-1 (под названием "DIY или Сделай Сам"), имеет профильный аналог на вдс-2 ("DIY или Сделай сам" - букву "с" зачем-то уменьшили).
guest 09.12.2014 21:54 # 0
Эт что?
roman-kashitsyn 09.12.2014 21:56 # 0
apgurman 27.11.2014 08:21 # 0
Господа-товариСЧи давайте конструктивнее. Вот Анонимус - молодец, заставил меня полностью переписать утилитку. Сейчас доперепишу и выложу, опять вам на радость, а мне на пользу.
bormand 27.11.2014 08:31 # +2
ГК != stackoverflow. Сюда приходят поразвлечься, в основном... Ну иногда бывает и конструктив, когда совсем уж скучно.
apgurman 27.11.2014 08:54 # 0
bormand 27.11.2014 10:44 # +2
apgurman 27.11.2014 11:04 # 0
Saehrimnir 28.10.2020 20:29 # 0
apgurman 27.11.2014 08:42 # +2
bormand 27.11.2014 09:22 # +2
Nobody says that we know english very well... For example I can estimate my knowledge like this:
- fluent reading for technical books/atricles, much worse for other books (I know very few ajectives);
- bad writing, but other people can understand me anyway;
- basic listening (with moderate speed and good pronunciation);
- shitty speaking (all "programmer's" words sounds like fucking mess).
apgurman 27.11.2014 09:26 # 0
bormand 27.11.2014 09:33 # 0
apgurman 27.11.2014 09:35 # 0
kipar 01.12.2014 19:38 # +2
You are fanny!
bormand 01.12.2014 20:54 # 0
guest 28.11.2014 14:35 # 0
apgurman 02.12.2014 12:43 # 0
wvxvw 27.11.2014 09:29 # 0
apgurman 08.12.2014 21:23 # 0
apgurman 08.12.2014 21:32 # 0
guest 28.11.2014 14:34 # +1
wvxvw 27.11.2014 10:12 # 0
Хоть ничего плохого в этом нет, но просто не приятно от того, что в одном месте и конкатенация и форматирование. Почему нельзя было сделать:
Херовые названия переменных. Если для локальных переменных, или переменных где одна буква о чем-то говорит (i, j, k - итерация, k, v - ключ-значение, n - число (итераций)), то что такое funny_indicator(self,p,n,s) не понятно.
Больше пробелов! После знака препинания должен быть пробел. Традиция не ставить пробелы после запятых происходит от текстов мат. формул которые набирались для полиграфии, и в них печатники расставляли пробелы самостоятельно. Т.е. пробелы там все равно были, просто их ставил другой человек. Если вы сами же и автор и наборщик, как в примере с написанием програм, это просто неграмотно писать все слитно.
В суть написаного не вникал, но на вид это мог бы быть т.н. union-find структура. Set подразумевает много копирования. Но я не понял зачем вообще нужно копировать из одного такого же объекта в другой.
apgurman 27.11.2014 10:49 # 0
1 Не совсем понял "Set подразумевает много копирования." - какое копирование где и когда оно бывает в Set?
2 "зачем вообще нужно копировать из одного такого же объекта в другой." а где у меня там есть копирование?
Спасибо, что помогаете)
wvxvw 27.11.2014 18:11 # 0
Ну и такие проверки как hasattr для чего-то относительно простого, не требующего изворотов с метапрограммированием и т.д. - буэ.
Красивше будет (ну и, если честно, то __iter__ проверять недостаточно, например, итерация может быть реализована через __getitem__.
> где копирование?
Это создаст "неглубокую" копию из одного такого же объекта в другом.
apgurman 27.11.2014 11:59 # 0
roman-kashitsyn 27.11.2014 12:05 # 0
Но форматированный вывод в теории должен быть чуть быстрее, если в интерпретаторе нет специальной оптимизации для сумм иммутабельных строк.
apgurman 27.11.2014 12:43 # 0