Форум сайта python.su
InterViМне предлагали с Java начинать, я не стал, к счастью. Тогда я подумал, что это всё слишком сложно для меня - всё это программирование. Но потом мне понадобились программы (программки) и я стал изучать QBasic, потому что он был довольно простым и мощным. И вот после первых программок я понял, что мне нужно больше средств в языке, и стал изучать C++. Конечно, я круто обломился на нём, потому что не мог и шагу сделать, чтобы не увязнуть. До сих пор помню, как пытался вывести в консоль что-то через направление в cout. Купил книжку, это ничего не дало. Книжка была от Шилдта, а он, как известно, песатиль, а не программист. Поэтому три тонны мешанины из C и C++ в его исполнении убедили меня, что я не потяну C++. Вот так и было всё на уровне QBasic, пока я не прогулял геометрию и вместо неё не пошёл с другом на его занятия по Borland C++, где изучали printf() и давали задания типа нарисовать часы со стрелками и цветной флаг России на коричневой палке. И тут я понял, что я могу это делать, и стал прогуливать геометрию уже планомерно, что даже привело к диалогу типа “если нравится программирование, то переводитесь туда куда-нибудь, нельзя же прогуливать”. Когда пары закончились (их было немного, но они сделали своё дело), я поставил линукс осенью и спустя какое-то время произвольно стал заниматься по C, потому что там просто всё для этого было. Сделать программу, ничего не устанавливая, было проще простого. Потом знаний стало не хватать и я купил книжку K&R2, заказав её через Интернет по почте на Озоне. А в книжке оказалось всё совсем просто, потому что написана она и профессионалом, и программистом. Поэтому там было всего мало и только по делу. Так я её прочитал всю до системных вызовов и стал писать уже программки на C; и первой рабочей программкой стала программка для опроса модема. Модем был под столом и часто я забывал его включать, и чтобы выяснить, включен он или нет, нужно было заглядывать под стол. То есть либо ты заглядываешь под стол, либо ты открываешь браузер и у тебя нет инета. Поэтому эта программа запрашивала состояние модема и возвращала результат типа да/нет. А вот программу эту запускала кнопка на рабочем столе, которая в случае “нет” выводила сообщение, что модем выключен. Так я перестал заглядывать под стол, а просто нажимал кнопку на панели в KDE3 и смотрел.
Я с Java начинал, которую тоже ругают. Питонисты за синтаксис, сишники за потребление ресурсов.
char *generate(const char *src, char *dst)
{
char *dst_start = dst;
unsigned long a, b, c, q, r, ah, al;
c = strlen(src);
c++;
while (c > 0) {
b = 0x42;
b += c;
a = *src;
src++;
a ^= b;
a <<= 5; /* must be rolled bits */
a >>= 2;
b = (b & (~0 << 8)) | 0x10;
q = a / (b & 0xff);
r = a % (b & 0xff);
a = r << 8 | q;
while (1) {
ah = (a >> 8 & 0xff);
al = a & 0xff;
a = (ah + 0x30) << 8 | al;
if (ah + 0x30 > 0x40)
a = (ah + 0x30 + 7) << 8 | al;
*dst = (a >> 8 & 0xff);
dst++;
if (al < 0x10)
a = a << 8 | 0x11;
else
break;
}
c--;
}
*dst = '\0';
return dst_start;
}
[guest@localhost ~]$ cat /usr/local/bin/ffurls.py
#!/usr/bin/env python3
# Преобразует открытые в Firefox ссылки
# в названия и ссылки в текстовом файле.
import argparse
import json
def get_js_data(fname):
with open(fname, encoding='utf-8') as fin:
return json.load(fin)
def get_ff_tu(data):
for win in data['windows']:
for tab in win['tabs']:
for entry in tab['entries']:
yield entry['title'], entry['url']
def strings_to_file(fname, seq):
with open(fname, 'w', encoding='utf-8') as fout:
for i in seq:
print(i, file=fout)
def convert_ff_to_txt(ifname, ofname):
ffurls = get_ff_tu(get_js_data(ifname))
tustrs = ('{}\n{}'.format(t, u) for t, u in ffurls)
strings_to_file(ofname, tustrs)
def get_prog_args():
desc = """
Converts Firefox session json file to
a text file with titles and urls.
"""
parser = argparse.ArgumentParser(description=desc)
parser.add_argument('ifname',
help='input Firefox session file (sessionstore.js)')
parser.add_argument('ofname', help='output urls text file')
return parser.parse_args()
def main():
args = get_prog_args()
ifname = args.ifname
ofname = args.ofname
convert_ff_to_txt(ifname, ofname)
if __name__ == '__main__':
main()
[guest@localhost ~]$
[guest@localhost ~]$ cat .env/scripts/ffurls.sh
#!/bin/bash
idir="$(ls -d $HOME/.mozilla/firefox/*.default/sessionstore-backups)"
ifile="recovery.js"
odir="$HOME/Downloads"
ofile="firefox.txt"
ipath="$idir/$ifile"
opath="$odir/$ofile"
if [ -e "$opath" ]; then
n=1
while [ -e "$opath" ]; do
opath="$odir/${ofile}_$n"
((n++))
done
fi
ffurls.py "$ipath" "$opath"
exit 0
[guest@localhost ~]$
Отредактировано py.user.next (Окт. 3, 2016 09:20:57)
Офлайн
py.user.next
прогуливать геометрию уже планомерно
py.user.next
while (1) {
ah = (a >> 8 & 0xff);
al = a & 0xff;
a = (ah + 0x30) << 8 | al;
if (ah + 0x30 > 0x40)
a = (ah + 0x30 + 7) << 8 | al;
*dst = (a >> 8 & 0xff);
dst++;
if (al < 0x10)
a = a << 8 | 0x11;
else
break;
py.user.nextСорри за оффтоп, а вы эти вкладки потом открываете? И почему сразу нельзя прочитать то что открываешь? Просто практика показывает, если вкладки более суток висят без активации то они вам больше не понадобятся ну или по крайней мере вы их найдёте снова, а не в этой куче из 30 вкладок.
и как бы надо иметь и те 30, и эти 20, и чтобы никаких перемешиваний между ними
Офлайн
noob_saibotТам нигде return нельзя использовать. break относится к внутреннему циклу. Он выходит во внешний цикл и там, во внешнем цикле, надо читать то, что находится в регистре после этого внутреннего цикла.
А что-то типа return и рекурсии тут нельзя использовать?
noob_saibotТак я их и сохраняю, чтобы потом открывать, но тогда, когда время выделил для чтения или просмотра. Я так часто сохраняю всякие видео на YouTube или когда на форуме топики открыл, а отвечать времени нет.
Сорри за оффтоп, а вы эти вкладки потом открываете?
noob_saibotТут речь идёт про то, что вся эта куча из 30 вкладок должна быть прочитана, потому что она уже почищена от неинтересных. Мало того, если даже чистить времени нет, то чистить можно сам файл, который получается, потому что каждая вкладка сохраняется в виде
ну или по крайней мере вы их найдёте снова, а не в этой куче из 30 вкладок.
заголовок
https://ссылка
Отредактировано py.user.next (Окт. 3, 2016 09:29:29)
Офлайн
гЛупо гаечным использовать гаечный ключ как палку для лыж.
Всего то нужно постичь эту мысль!
да на С можно написать что угодно - но согласитесь - написать WEB магазин на сях по трудо затратам будет в 10 раз сложнее И так далее чем сделать тоже самое на ПХП! И так далее!
Питон никогда не будет работать так же быстро как С - но есть ряд задач где оно и не нужно!
К тому же высоконагруженные участки кода можно писать на С и использовать его из питона!
Подобная тема встает постоянно на радиолюбительских форумах! Где идет извечная война между С асамблером и уже питоном! И только умные и действительно прошаренные люди пишут что каждый язык для своей задачи! Например если нужно от микроконтроллера вывод форматированных данных работа с периферией типа екрана итд то исползуют питон если обычные вычисления С а там где нужна ацкая скокрость АСМ - хотя зачастую ето мешанина!
К примеру тот же точный вольтметр - вычисление температуры лучте делать на асме - а вот вывод на екран уже на С потому что напистаь его на асме - ето рак :_)
Офлайн
> Я с Java начинал, которую тоже ругают. Питонисты за синтаксис, сишники за потребление ресурсов. От собственного невежества ругают, как будто у них выбора нет на чём писать.
А ты действительно думаешь что жабу ругать не за что? Я так вообще питон ругаю, хотя скоро исполнится 10 лет как я знаком с этой змеюкой. А на счёт выбора ты абсолютно прав, я например на третий питон переходить не собираюсь, перейду сразу на другой ЯП когда двойка сдохнет. Благо определённые наработки имеются.
Офлайн
Rodegast, что-то не слышал об интерпретируемых и транслируемых языках, в которых нет недостатков. Почему-то сей факт никому не мешает выполнять на них множество сложных проектов. Выбери тот язык, который тебе больше нравится и который подходит под выполнения задач.
Офлайн
> Выбери тот язык, который тебе больше нравится и который подходит под выполнения задач.
Да уже всё давно выбрано, но на него придётся переписывать уже работающие проекты, по этому до сих пор на питоне сижу.
Офлайн
py.user.nextА с++ там в седьмой строчке?! ;)
Вот это получилось
Офлайн
PooHКороче, a, b, c в сишном коде - это ассемблерные регистры eax, ebx, ecx (32-битные). Это чтобы ты не подумал, что я просто по буквам это проименовал, как нуб, от фонаря.
А с++ там в седьмой строчке?! ;)
Отредактировано py.user.next (Окт. 3, 2016 17:20:53)
Офлайн
Rodegastзачем?
на него придётся переписывать уже работающие проекты
Офлайн