• С чего начать реализовывать транслятор языка?

    @nirvimel
    300px-CompilersBook2ed.png
    Ответ написан
    Комментировать
  • Как сделать правильный редирект на nginx?

    @nirvimel
    location / {
       rewrite ^/(\w+)/$ /pages/$1.html break;
       return 404;
    }

    Я это прямо на коленке написал. Не проверял, конечно, никак.
    Но сама идея, надеюсь, понятна будет.
    Ответ написан
  • Как найти и изменить конкретную настройку локальной групповой политики через реестр?

    @nirvimel
    1. Снять полный дамп реестра: regedit /e c:\output_1.reg
    2. Изменить нужную настройку через GUI.
    3. Снять второй дамп: regedit /e c:\output_2.reg
    4. Сделать diff обоих дампов: fc c:\output_1.reg c:\output_2.reg
    Ответ написан
    3 комментария
  • Почему удаляется прокси на компьютерах подсети?

    @nirvimel
    Я таки догадался, что речь идет о windows в качестве операционной системы и internet explorer в качестве браузера, не смотря на то, что вы не упомянули об этом ни в самом вопросе, ни в тегах.
    На windows "общесистемные" настройки прокси, которыми обычно руководствуется ie при работе (другие браузеры не обязаны заглядывать в эти настройки, у каждого могут быть/не_быть свои прокси) хранятся в реестре в ветке
    HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    в соответствующих ключах с именами содержащими в составе слово Proxy. Так как реестр windows поддерживает ACL, то простым о очевидным решением вашей проблемы будет снять все разрешения на запись в эти ключи для всех пользователей и SYSTEM без исключения. Это легко делается при помощи regedit. Нарыл в сети несколько скринов частично иллюстрирующих процесс:

    regedit-acl.png
    .
    cc138006.fig08%28en-us%29.gif
    Тут показано как ограничивать права только на чтение для некого "RESTRICTED". Вам остается проделать подобную операцию для все без исключения пользователей/групп (включая SYSTEM), имеющих доступ к этим ключам.
    Ответ написан
    2 комментария
  • Как получить доступ к Ajax контенту во время парсинга?

    @nirvimel
    В общем случае, при помощи парсинга html, не возможно получить страницу в том виде в который ее приводят ее собственные джаваскрипты при загрузке потому, что парсер - не браузер, он не исполняет джаваскрипты.
    В частных случаях можно вынуть из текста скрипта все urlы по которым идут ajax запросы, производить все эти запросы в своем коде и парсить результаты. Тут куча подводных камней - во-первых, параметры ajax запроса могут быть спрятаны в коде каким-нибудь не тривиальным образом, во-вторых нужно правильно выставить все заголовки запроса со всеми куками (которыми скрипты со страницы так же могут манипулировать), потом не забыть правильно задать referrer. В общем случае у скриптов на странице всегда остается возможность, используя какие-нибудь динамически меняющиеся параметры, запутать свою работу так, что для такой страницы создать парсер будет невозможно.
    Радикально иной вариант - использовать настоящий браузер (через Sillentium, например), который исполняет все скрипты и, с точки зрения противоположной стороны, неотличим от живого пользователя. Это решает все проблемы с хитрыми ajax-ами. Но это уже совсем другой порядок объемов потребляемых ресурсов и скорости. Если, например, на самом дешевом vps (с 128 Мб памяти) на гигабитном канале можно парсить в 50-100 потоков. Даже из расчета по несколько секунд на ожидание + обработку каждой страницы получаем 10-20 расперсенных страниц в секнду. Теперь если перейти на Sillentium + Webkit, то 128 Мб уже не хватает для запуска даже одного потока. Если даже запускать все это на своем домашнем десктопе с гигабайтами памяти (с vps в качестве прокси), то можно получить максимум несколько расперсенных страниц в секунду. То есть парсинг через полноценный браузер не конкурент парсерам типа lxml + requests/liburl.
    Ответ написан
    Комментировать
  • Как научиться делать "сайт под ключ"?

    @nirvimel
    К тому что сказал Антон Измайлов хочется добавить, что в одиночку "под ключ" берутся делать в основном отчаянные раздолбаи. Заказчикам нужно остерегаться таких "на все руки мастеров" как огня и обходить за километр. Это вообще - хороший детектор индуса-дилетанта, когда фрилансер одиночка (конторы, со своими представителями на фрилансе - исключение) горит желанием сделать заказчику под_ключ.

    Конечно, из этого правила (как из любого) есть исключения. Но если вы считаете себя таким исключением, тогда вы должны хорошо понимать то, кем являются 90% ваших "коллег"/конкурентов и с кем бок о бок вам придется работать, а точнее драться за клиентов, число которых всегда меньше числа индусов.

    Мой совет: Не стремиться стать полезным для каждого. Фриланс - это не профессия, а просто форма заработка за свой труд. Работа на фрилансе не отменяет необходимости в специализации и обретении конкретной профессии. Выберете себе сектор рынка труда и станьте профессионалом своей области. Это в будущем обеспечит (почти) постоянную трудовую занятость и достойную оплату своего труда. Тогда вам не придется конкурировать с легионом индусов и драться с ними за каждого клиента.
    Ответ написан
    3 комментария
  • C# заменит ли Java?

    @nirvimel
    Пока кто-то ждет когда C# заменит Java, тем временем Java заменяет собою 3 или 4 таких как C#:

    d53eaabd0b4048af88a05b5ec86e304e.png
    Ответ написан
    5 комментариев
  • Спарсить String в массив int - Java, как реализовать?

    @nirvimel
    Сначала строку разбиваем .split(",\s"); в массив строк. Создаем массив int той же длины. Потом в цикле обходим массивы и поэлементно преобразуем строки в числа numbres[i] = Integer.parseInt(strings[i]);

    UPD: На самом деле это НЕ лучшее решение. Я как-то сразу проглядел, что эта строка - валидный объект в формате JSON, и парсится должна соответствующими инструментами. Правильные ответы дали: EugeneP2 и OnYourLips
    Ответ написан
    Комментировать
  • Почему все скептически относятся к MongoDB?

    @nirvimel
    Во-первых, я не отношусь к NoSQL скептически. Я считаю, что у таких продуктов большое будущее на рынке. Потому, что для них существует огромная ниша, которую они только начинают занимать. В свое время PHP занял такую нишу в качестве массового языка для веб-разработки, хотя многие относились и относятся к нему скептически, и это даже мягко сказано.

    Во-вторых, что касается проблем NoSQL. Его главная проблема - та задача, которую он пытается решить.
    Итак, у нас был старый добрый RDBMS, которому приходилось исполнять сложные запросы, комбинировать данные из разных таблиц. Это и была причина его торможения. Поэтому перед ним ставили всякие redis, memcached и просто внутренние кеши приложения. И это решало проблему быстродействия.
    Потом появились парни в розовых кедах и сказали: "Зачем такая сложная архитектура? Поменяем все это на ОДИН сервер, который будет хранить объемы как oracle и отдавать со скоростью memcached". Это решение выглядело как полностью аналогичное предыдущей схеме, но с меньшим количеством деталей. Аналитики и бизнес ухватились за это и возвели NoSQL на трон, а предыдущий стек технологий отправили в корзину. Все казалось замечательно. Но при этом упустили всего одну мелочь - данные в NoSQL хранятся не в Нормальной форме, и это неотъемлемое свойство технологии не возможно исправить.
    Чем опасно хранение данных не в нормальной форме? Это начали понимать по мере разработки. Когда структура базы подогнана под запросы, эти данные выбирающие, и когда в процессе разработки возникает необходимость выбирать данные как-то по-другому, приходится создавать новые структуры, под новые запросы, то есть ДУБЛИРОВАТЬ ДАННЫЕ. Вот с этого момента эротический сон превращается в кошмар. Когда данные пишутся в одно место, то они тут же мгновенно (или не мгновенно?) должны быть отражены в другом месте. Если производить такую синхронизацию синхронно с записью, то возникают забытые проблемы с производительностью, если асинхронно - то возникают (совсем недавно забытые) проблемы с инвалидацией кешей. Но это - только начало. Следующий кошмар - контроль (ссылочной, например) целостности. Вся грязная работа, которой раньше занимался движок RDBMS, опять ложится на плечи прикладных кодеров. В итоге наступает момент, когда усложнять логику, контролирующую работу с базой (раньше о такой необходимости даже не слушали) становится дороже чем выбросить весь проект в корзину и переписать все обратно на нормальную RDBMS. И тогда приходит философское понимание того, почему эту классическую форму данных в науке называют НОРМАЛЬНОЙ.
    Ответ написан
    2 комментария
  • Как массово изменить размер изображений при условии, что они больше заданных значений высоты и ширины?

    @nirvimel
    На все вопросы о пакетном преобразовании изображений один ответ - Imagemagick.
    Конкретно в вашем случае может помочь: convert -resize 600x600\> filename.jpg
    Более подробна эта проблема разбиралась тут.
    Ответ написан
    Комментировать
  • Где можно потренировать навыки JS?

    @nirvimel
    Например, писать юзерскрипты для всего подряд. Улучшать, приспосабливать под себя любой сайт, который встретился встретится на пути. Научиться лечить от жадности оборзевших веб-мастеров, резать рекламу, которую не режет adblock, обходить навязанные ограничения, вытаскивать на весь экран ценный контент, погребенный под кучей баннеров и ненужной ерунды. Короче переделывать интернет под себя.
    Ответ написан
    Комментировать
  • Как заменить кусочек кода на Jquery чтобы всегда выводило определенный текст?

    @nirvimel
    Idailyiee очевидно прав. Но тут рекомендуют делать это так:
    .append( document.createTextNode(text) );
    Ответ написан
  • Есть ли смысл в нативных связях в БД, если relation в active record их дублируют?

    @nirvimel
    Хорошие ORM всегда выстраивают в базе полную структуру связей со всеми Constrainments и Foreign keys.
    Ответ написан
    Комментировать
  • Chrome.fileSystem?

    @nirvimel
    Это не та файловая система, которая в /home/username или C:\Documents and Settings\username.
    Это просто песочница, изначально пустая, пока туда не залито что-нибудь.
    К локальным ФС в /home/username или C:\Documents and Settings\username из веба доступа нет и не будет!
    Ответ написан
    5 комментариев
  • Электронные адреса в БД в зашифрованном виде на PHP, как реализовать?

    @nirvimel
    использовать дополнительные поля нельзя

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

    1. Изначально разбирать емейл на юзернейм и домен.

    2. Шифровать эти части каким-нибудь блочным шифром, чтобы длины получаемых строк не коррелировали с начальным содержимым. Тут возникают ограничения на длины изначальных юзернейма и домена, ну так в реальной жизни все равно длина емейла чем-то ограничена.

    3. Писать в базу строки такого вида:
    sprintf("%s_%s", base64_encode($encripted_domain), base64_encode($encripted_username));

    4. Осуществлять выборку с фильтрацией по домену так:
    sprintf("SELECT * FROM table WHERE email LIKE \"%s_%%\" ", base64_encode($encripted_domain));

    5. Восстанавливать исходный емейл так:
    list($domain_base64, $username_base64) = explode("_", $encripted_email_from_db);
    $decripted_email = sprintf("%s@%s", decript_function(base64_decode($username_base64)), decript_function(base64_decode($username_base64)));

    Тут decript_function - пользовательская функция расшифровки.
    Ответ написан
    Комментировать
  • Как сделать процентровку по годам из Excel?

    @nirvimel
    Был ткаой вопрос. Предлагались разные решения:
    Ответ написан
    1 комментарий
  • Как с минимальными расходами траффика отправлять данные из браузера?

    @nirvimel
    Начнем с того, что никакой типичный php-хостинг (shared hosting) не выдержит такую бомбардировку пакетами. Во свех EULA содержится пункт, по которому за такое следует бан. Тут нужен как минимум хороший vds.
    Далее, если есть vds, то есть и nginx на нем (Апач создан для других задач). Nginx умеет держать удар при пакетной бомбардировке и умеет фильтровать и проксировать websocket.
    Далее, за спиной у nginx можно поставить любой websocket сервер на любом языке, даже на PHP - хотя это не лучший выбор для серьезных нагрузок, его разработчики явно не расчитвыали на поток >10 пакетов в секунду от каждого клиента.
    Ответ написан
    Комментировать
  • Какие окологиковские русскоязычные сайты вы читаете?

    @nirvimel
    Этот пост надо в рубрику SEO, но не в качестве вопроса, а в качестве ответа на вопрос: "Как одним мелким постом налить МНОГО трафика на сетку своих (или клиентских) новостных блогов".
    Ответ написан
    5 комментариев
  • Как сделать запрос к бд в зависимости от GET параметров?

    @nirvimel
    При явном указании города нет смысла фильтровать по стране и штату, при явном указании штата нет смысла фильтровать по сране. Код может выглядеть примерно так (у меня, понятно, нет возможности проверить):
    location = form.cleaned_data
    city, state, country = location['city'], location['state'], location['country']
    kwargs = ({'city': city} if city
       else ({'state': state} if state
       else {'country': country} if country))
    data = Model.objects.filter(**kwargs)

    Все это не отменяет необходимости на клиенте фильтровать список городов при выборе страны/штата.
    Ответ написан
    1 комментарий