Category: it

Category was added automatically. Read all entries about "it".

Как всё же обновить базы 2GIS после неприятной ошибки удаления несуществующего файла

  Последнее, майское обновление баз 2GIS не обошлось без сюрпризов. И, как водится, неприятных.
    Началось с того, что установка обновления, до этого постоянно происходящая в "тихом" режиме, без окон инсталлятора, на этот раз решила показать себя по полной программе. После загрузки обновления инсталлятор долго-долго прошуршав дисками(гораздо дольше обычного) показал себя. Сначала предупредил, что готовится к установке, а потом явил вот такое окно:

2GIS, установка обновления, подтвержение согласия с лицензионным соглашением

    Ну ок, соглашаемся. Далее установщик делает вид, что выполняет что-то полезное, опять долго-долго шурша дисками ...
2GIS, установка обновления, начало установки обновления

    НО! Вот он, "сюрприз"!
2GIS, установка обновления, попытка удаления несуществующего файла

    Установщику "внезапно" захотелось удалить ФЕВРАЛЬСКОЕ обновление(не забываем, да и на скрине видно, обновление происходит за МАЙ)! Вот так вот захотелось и всё! Вынь ей и положь! Хотя сама в марте удалила в системе его!
    Естественно всё приходит к закономерному итогу:
2GIS, установка обновления, ошибка установки из-за попытки удаления несуществующего файла

    Кстати, замечу, что даже бы если в системе не было бы СОВСЕМ этого города и он устанавливался бы заново - всё равно установщик для установки баз за МАЙ потребует ФЕВРАЛЬСКИЙ пакет обновления! Который обычным пользователям и на сайте 2GIS для скачивания то недоступен!

    Что, казалось всё, не даёт дебильный сценарий установщика установить обновление? Ну, значит, не будем "трясти", а будем действовать с умом.
    Идём для начала в каталог C:\Users\All Users\Application Data\2GIS\2GISUpdate\Temp\>(C:\Documents and Settings\All Users\Application Data\2GIS\2GISUpdate\Temp\ в Windows XP) и ... сюрприз-сюрприз! Именно там лежит тот установочный файл, который программа обновления наотрез отказалась нам ставить без удаления старых файлов. Осталось извлечь из него данные и обновить 2GIS вручную.
    Любой файл с расширением .msi можно распаковать без установки программой установщика Windows. Перенесём этот установочный файл, скажем, в корень диска D. на старом месте его оставлять не надо.
    Затем выполним вот такую команду(пример для майского обновления карты Москвы, для других городов и месяцев меняйте имя пакета):
    msiexec /a m:\2GISData_Moscow-121.0.0.msi /qb TARGETDIR=D:\TMPA
    Во избежание ошибок заранее создайте каталог TMPA на диске D, где будете распаковывать установочный пакет.
    Эту команду следует исполнить из консоли. Для этого выполните: Пуск->Выполнить, набрать в строке ввода cmd и нажать OK. Далее в чёрном окошке набрать d:, нажать Enter(Ввод), затем сd \, нажать Enter(Ввод). Другой вариант - ввести в командной строке файл-менеджеров Far или Total Commander.

    После того как установщик распакует пакет установки, в каталоге TMPA будут находиться 3 файла.
    В подкаталоге PFiles\2gis\3.0 будет находиться самый нужный файл. Собственно база города. Для Москвы, к примеру, это будет файл Data_Moscow.dgdat. Замените этим файлом такой же файл, находящийся в корне каталога программы 2GIS. После этого новая база начнёт работать немедленно после запуска 2GIS!
    Остальные два файла относятся к установке обновлений.
    В подкаталоге AppData\2GIS\2GISUpdate\Installed\ будет находится подкаталог с именем города(у нас в примере это Moscow), в нём подкаталог с номером версии(для майского обновления для Москвы каталог имеет имя 121.0.0) и в нём файл с данными для программы обновления. В нашем примере это файл 2GISData_Moscow-121.0.0.mark.
    Скопируйте каталог (у нас в примере это Moscow) со всем его содержимым в каталог C:\Users\All Users\Application Data\2GIS\2GISUpdate\Installed\>(C:\Documents and Settings\All Users\Application Data\2GIS\2GISUpdate\Installed\ в Windows XP). Если Вы уже обновляли этот город ранее, то там уже имеется каталог с этим именем. Но можете копировать спокойно, внутри его находятся подкаталоги с данными более старых обновлений.
    После этого программа обновления уже будет знать, что у Вас стоит последнее обновление баз и больше, пока не появятся новые версии их, обновлять не будет.
    Остался последний шаг.
    В корне каталога TMPA, куда мы распаковывали пакет, будет, в нашем примере, находится файл 2GISData_Moscow-121.0.0.msi с данными установочного пакета. Собственно именно такой файл, только с номером 118, и искал установщик. Правильно будет его поместить в скрытый каталог Installer в системном каталоге. Но если вы не можете этого сделать - поместите его в удобном для Вас месте и подсуньте программе установщика, когда она его захочет использовать.

    Если вы используете карты несколько городов, то в каталоге C:\Users\All Users\Application Data\2GIS\2GISUpdate\Temp\>(C:\Documents and Settings\All Users\Application Data\2GIS\2GISUpdate\Temp\ в Windows XP) будут находиться несколько установочных пакетов. Проделайте распаковку и копирование полученных файлов для каждого города. Распаковку можно проводит в общий временный каталог, так как имена файлов и каталогов не пересекаются.

Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе

Изящный способ обойти запрет Facebook на ввод данных из клипборда

    Многие из тех, кто бывает в интернете, посещают и Facebook. Кто-то там активно пишет, кто-то просто заходит посмотреть. А когда посмотрел - то порой бывает желание оставить комментарий. Вот тут-то Facebook и "показывает свой нрав".
    Если Вы захотите не вводить текст вручную в поле комментария, а скопировать уже заранее готовый - то у Вас ничего не получится! Если Вы вставите в поле комментария текст из клипборда, то там его не увидите. Более того - поле комментария просто схлопнется и исчезнет!
    Попытки ввода вместо стандартного Ctr+V альтернативным, менее известным Shift+Ins приведут к тому же результату. А если Вы отключите Java Script для отключения этого механизма - то Facebook вообще откажется с вами корректно работать.
    И что же делать? Набирать всё вручную? Выхода нет?
    Выход есть!
    В том поле комментария, в который Вы хотите ввести уже набранные данные, сначала вручную введите пробел. А вот после этого спокойно вставляйте через клипборд ту информацию, что у Вас уже была в файлах и/или на сайте(сайтах). После первого введённого символа "цербер", что на давал Вам вставить информацию из клипборда, "засыпает" и не мешает уже Вам её вставлять таким образом.
    А после того как вставили - можно спокойно публиковать комментарий.
    А как же пробел перед текстом? - спросите Вы. А это пробел уберёт сама Facebook. В том и состоит изящество метода.
    Собственно вместо пробела можно было первым символом вводить любой. Например точку. Но тогда перед тем, как публиковать комментарий, Вам пришлось бы её стереть самостоятельно.
    Имейте в виду, если будете вставлять в поле Facebook форматированный текст, например с какого-то сайта - то эти свойства также успешно перенесутся, частично или полностью. Так что если Вам они не нужны, сначала скопируйте такой текст в Блокнот, например, - который уберёт форматирование, и только после этого вставляйте текст в Facebook. А если это форматирование хотите оставить - тогда копируйте сразу в поле комментария.

Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе

Что бы ещё нажать чтобы в BIOS появилась загрузка с USB-устройств?

    .. именно так думалось мне, когда из меню выбора устройств для загрузки они пропали. Пропали все. Все до одного, даже постоянно подключенный внешний жёсткий диск.
    Как в любом детективе при обнаружении трупа всегда рассказывается предыстория. Была она и тут. Как выяснилось чуть позже, в процессе тестов, ридер microsd карты, с которой я хотел загрузиться сгорел. Ну не с салютом и взрывом - а просто тихо из полезного устройства стал изображать из себя "совсем не проводник". Что с такими ридерами происходило иногда. Более того, именно такая, очень дешёвая и компактная, модель ридера меня вполне устраивала. Ибо сгорал только он - а карта в нём, если вставить её в другой ридер, работать продолжала и дальше. Но вот именно это совпадение - отказ ридера при выборе устройств загрузки привела к такому неожиданному моменту. Ноутбук забастовал.
    "А нет у тебя USB-устройств для загрузки, сгорели оне" - нагло заявила мне эта железка.
    Попытка загрузиться с CD на USB-DVD приводе вместо карты памяти microSD в ридере ни к чему не привела. Он тоже не появился в списке устройств - т.е. и грузиться с него было невозможно.
    Притом в системе, в отличие от другого случая, все устройства USB были прекрасно видны и функционировали без проблем.
    Попытка воспользоваться тем же решением ни к чему не привела. Как не виделись устройства USB для загрузки после отключения питания и вынимания аккумулятора - так и не виделись дальше. Значит это проблема записалась где-то в энергонезависимой памяти.
    В обычном компьютере вынуть батарейку и сбросить CMOS почти всегда не представляет проблем. В ноутбуках же приходится разбирать его, чтобы добраться до этой батарейки. Да и, притом, не все параметры сбрасываются при этом. Поэтому этот способ был оставлен как самый крайний вариант.
    Вероятно BIOS не перепрочитывал полностью конфигурацию при старте ноутбука и пользовался старой, запомненной непосредственно после сгорания ридера. Надо было найти путь как заставить перепрочитать конфигурацию ноутбука полностью.
    К счастью в BIOS ноутбуков не так и много настроек сейчас. Быстро был найден пункт Fast Boot в настройках. Он был включён.
    Отключение этого режима привело к успеху. В списке загрузки появились обратно все USB устройства. Проблема была решена.
    Отключение режима быстрой загрузке(Fast Boot) будет полезно также когда ноутбук не видит при старте в BIOS других свежедобавленных периферийных устройств.

Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе

Agile-манифест как он есть

    Мы - программисты.
    Мы сделаем всё, что вы хотите. По вашему заданию. За ваше время. За ваши деньги.

    Получите!

    Почему нельзя добавить ещё одну кнопочку? Всё согласно вашему заданию. Вы думали, что расширяемость подразумевается? Бумага и компьютеры не воспринимают мыслей. В техническом задании этого нет.
    Постоянно происходят непонятные случайные ошибки? А вы что, не знали, что на тестирование надо времени минимум на порядок больше чем вы указали в задании? А серьёзные ошибки отыскиваются годами. Исправить? И ещё раз перечитайте техническое задание.
    У приложения непонятный и запутанный код? А что вы хотели от программиста за те деньги, что вы выделили на задание? Посылая кого-либо в магазин с десятью рублями вы же не ожидаете, что принесут трюфеля и чёрную икру?

    Если вы будет настолько безумны и расточительны во времени(минимум на порядок больше чем вы указали на задание) и в деньгах на оплату других программистов и юристов(минимум на 2-3 порядка больше чем вы нам заплатили) то мы вернём вам деньги. Пять долларов. За любое количество ошибок. Максимум. Пять. Это ведь немалые деньги, не правда ли?

    Мы - программисты!
    Мы сделали всё, что вы просили. По вашему заданию. За ваше время. За ваши деньги.

        И отстаньте от нас!

    P.S. Оригинал Agile-манифеста можно прочитать тут.

Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе

Перенос Expression Engine(ЕЕ) на новое место

    1. Устанавливаем но новом месте чистую ЕЕ. Лучше той же версии, но можно и с различием в "младших цифрах". При установке префикс в новой базе лучше оставить таким же что и в старой.
2. Стираем установленные файлы. Копируем на новое место все файлы старого с заменой каталога имени {system} (если надо) в файлах path.php , {system}/config.php и {system}/config_bak.php .
3. Правим дамп старой базы на новый путь {system} и новый адрес http/https . Заменяем в дампе старой базы раздел sites из новой базы. Если префиксы старой и новой баз различались - меняем его у заменяемой секции sites на тот что был у старой базы. Стираем на новом месте новую базу и ставим вместо неё старую с изменённой секцией sites .
4. Запускаем сайт. Правим через контрольную панель настройки и пути, что не были исправлены.
5. Правим настройки расширений, что стоят. Например у FCKeditor путь и параметры запуска, у LG social bookmarks - включить нужные СС и указать путь для JQuery.

Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе

Как долго и счастливо работать с версиями Skype, которые Микрософт перестаёт поддерживать

    Skype, работающий уже очень долго благодаря способу, описанному в предыдущей статье продолжает нормально работать до сих пор без проблем. Однако из-за "махинаций" Микрософта через него не получается общаться с новыми версиями Skype. При любой попытке обратиться будут либо сообщения что "пользователь оффлайн" либо что у пользователя, к которому я пытаюсь обратиться, "нет возможности чата". В общем Микрософт специально сделала полную несовместимость между версиями.
    На момент написания статьи в Windows XP нормально работал Skype версии 7.38.32.101. Попробуем проделать с ним то же самое, что и со старыми версиями Skype. Точно так же будем использовать портабельную версию программы.
    Для начала попробуем поискать - где же прописана версия Skype в этой программе. Проведённый поиск находит - но с предыдущем случаем имеются два различия:
    1. Номер версии прописан в Unicode и искать надо программами, которые могут искать в таком формате. Если у вас программа не может искать в Unicode - переведите номер версии из Unicode в Hex и ищите в Hex-е. Достаточно много программ и онлайн-сервисов, которые могут в этом помочь.
    2. Версия записана не в одном файле. Она нашлась однократно в файле SkypeResources.dll и многократно в файле Skype.exe(в этой портабельной версии они находятся в подкаталоге App\Skype\Phone). Будем заменять версию во всех местах, где она была найдена.
    Для поиска и замены вполне можно использовать WinHEX. Последние версии его могут искать и в Unicode.
    Ищем и заменяем версии во всех вхождениях. Заменяем во всех найденных местах строку 7.38.32.101 на, скажем, 8.98.32.101. Сохраняем результат.
    Однако это ещё не вся работа. Запускаем исправленную нами версию Skype. При старте мы получим сообщение о нарушении контрольной суммы: "получено ххххх когда ожидалось yyyyy". И Skype предлагает обновиться. При этом Skype продолжает работать. Запоминаем оба числа - старую и новую сумму и завершаем работу Skype.
    После этого WinHEX-ом открываем файл Skype.exe, в Unicode ищем в нём старую контрольную сумму и заменяем её на новую. Записываем результат.
    После этого запускаем Skype заново - и больше замечаний по контрольной сумме не появляется. Теперь можно работать с этой версий очень долго, не опасаясь отмены поддержки этой версии Skype Микрософтом.
    Если вы хотите запускать эту версию Skype совместно с другой версией, то добавьте в файл SkypePortable.ini, который образуется после первого же старта в том же каталоге, где находится файл SkypePortable.exe строку AllowMultipleInstances=true.
    Данная методика должна работать также и с теми версиями Skype, которые Микрософт уже перестал поддерживать - если вам удобно работать именно с той версией программы.

Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе

Viber - восстановление всех возможностей участников контакт-листа (наказываем мошенников!)

    В предыдущей статье
описывалось некорректное, можно даже сказать мошенническое, поведение
Viber в случае если сначала мы отвечаем участнику контакт-листа сначала в
desktop версии Viber и только потом в мобильной добавляем участника в
контакт-лист. Ситуация весьма неприятная и, как показал быстрый просмотр
интернета, далеко не единичная. Притом решения этого вопроса, как я
увидел, никто не нашёл. Хотя эта проблема, как показало моё
исследование, решается не так и сложно и достаточно быстро.



    Итак, как же возвратить "репрессированным" участникам контакт-листа
все возможности общения, а не только платные Viber Out? Делаем это так:

    1. Завершаем работу desktop версии Viber в Вашем компьютере.
Поверяем посредством диспетчера задач(Ctr+Alt+Esc) или других программ,
например Process Killer-а или Process Hacker-а
что она завершила свою работу. Если завершение работы не происходит
длительное время - с помощью любой из этих программ завершите Viber
принудительно.

    2. Идём в каталог %USERPROFILE%\Application Data\ViberPC\[ваш номер]\ если у Вас Windows XP или в %USERPROFILE%\AppData\Roaming\ViberPC\[ваш номер]\ если у Вас Windows7 или старше. [ваш номер] - номер, который Вы используете в Viber. Если не помните, то можно сначала перейти в каталог %USERPROFILE%\Application Data\ViberPC\ если у Вас Windows XP или в %USERPROFILE%\AppData\Roaming\ViberPC\ если у Вас Windows7 или старше и затем уже перейти в подкаталог с именем в виде номера.

    3. Копируем оттуда файл viber.db в любое удобное для работы место. На всякий случай сделаем ещё и его копию там, где Вы храните важные данные.

    4. Поскольку эта база сохранена в формате SQLite format 3 то загружаем себе любую программу для редактирования в этом формате. Я использовал SQLite Studio.

    5. Открываем нашей программой файл viber.db. Нас интересует таблица PhoneNumber. Выбираем её слава в дереве таблиц, дважды щёлкнув на название таблицы PhoneNumber в дереве, а затем справа выбираем закладку Данные.


открываем таблицу PhoneNumber

    6. Таблица PhoneNumber, как видно, состоит всего из 2
столбцов. Номера участника контакт-листа и его "статуса" для Viber-а.
Причём "полноценные" участники имеют в поле IsViberNumber значение 1, а "репрессированные" - 0. Попробуем вернуть всем номерам контакт-листа полные права.

    7. Дважды щёлкнув на поле IsViberNumber, где значение его рано 0, отредактируем его и введём значение 1. Повторим это для всех строк где значаени IsViberNumber равно 0.


редактирование и сохранение таблицы PhoneNumber

    8. Теперь осталось сохранить наши изменения в базе. После первого же изменения поля IsViberNumber
выше поля где высвечивается содержимое таблицы "зажглись" 2 кнопки -
записи подтверждения с изменением, в виде зелёного квадрата с
галочкой(отмечен пурпурной точкой на предыдущем скрине) и отказа от
сохранения редактирования в виде красного квадрата с косым крестом.
Нажимаем на кнопку сохранения изменений. Эти две кнопки после этого
должны "потухнуть".

    9. Завершаем работу программы SQLite Studio.

    10. Сохраняем файл viber.db обратно в каталог %USERPROFILE%\Application Data\ViberPC\[ваш номер]\ если у Вас Windows XP или в %USERPROFILE%\AppData\Roaming\ViberPC\[ваш номер]\ если у Вас Windows7 или старше. На всякий случай перед копированием туда изменённого viber.db сохраните старый вариант файла viber.db в другом месте.

    11. Теперь можно запустить desktop версии Viber. Вы можете пройтись
по вашему контакт-листу и убедиться что все номера с ограничением
функций получили все возможности общения, а не только платный Viber Out.
Если же эти возможности у тех номеров так и не появились - значит или
Вы скопировали в каталог Viber не тот файл viber.db или Вы не сохранили в нём данные после изменения. Повторите наши шаги для устранения ошибки.

    P.S. Номера на скринах размыты специально.


Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе

Особенности установки Toshiba BlueTooth Stack

    Если у Вас не работает ваше BlueTooth устройство после установки Toshiba BlueTooth Stack - рекомендую проделать следующее:

    1. Деинсталлируйте установленный Toshiba BlueTooth Stack.
    2. Включите, если был выключен, Windows Script Host (WSH). Для этого запускаем regedit, отыскиваем ветку реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows Script Host\Settings и устанавливаем параметр Enabled равным 1.
    3. Установите BlueTooth Filter Driver Package для данного устройства. Его можно найти на сайте производителя устройства.
    4. Установите заново Toshiba BlueTooth Stack.

    Теперь ваше BlueTooth устройство должно работать правильно.

Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе

Подключение "No CAPTCHA reCAPTCHA" к форуму на Invision Power Board(IPB) версии 1

   Хотя Invision Power Board(IPB) версии 1 уже считается многими "устаревшим" и давно официально не поддерживается - но, тем не менее на нём ещё работает много форумов. А на них, как и форумах, работающих на других движках, одна из главных проблем это спамеры.
    Встроенная капча IPB1 легко ими "обходится". Да и старая reCAPTCHA - тоже. Но вот новая(и уже исправленная) "No CAPTCHA reCAPTCHA" от Гугла - ещё достаточно надёжна. Поэтому и будем подключать её к форуму на Invision Power Board(IPB) версии 1.
    В интернете, к сожалению, нет нигде методики подключения "No CAPTCHA reCAPTCHA" к IPB1. Но на одном китайском форуме отыскался патч для подключения старой версии reCAPTCHA к IPB1. Воспользуемся им - изменив под новую версию, "No CAPTCHA reCAPTCHA" .

    Для начала идём на сайт Гугла вот сюда https://www.google.com/recaptcha/admin для получения ключей. Если не зарегистрированы на сайте Гугла - зарегистрируйтесь сначала(ха-ха-ха, покажите мне этого человека :-)).
    В поле "Название" укажите удобное Вам название(я ставлю URL главного сайта). Затем выберите типа капчи "Invisible reCAPTCHA". В поле "Домены" внесите Ваш домен(или домены), к которым собираетесь подключить "No CAPTCHA reCAPTCHA". Галку с пункта "Отправлять владельцам оповещения" можете как оставить - так и снять. Если не хотите лишних сообщения от Гугла - снимайте. Дальше нажимаем на кнопку "Регистрация" - и получаем ключи.
    Их 2 - открытый(ключ сайта) и закрытый. Теперь можем Приступить непосредственно к модификации IPB1 под "No CAPTCHA reCAPTCHA".

    Дальше будет изложена последовательность редактирования файлов IPB1 для подключения к нему "No CAPTCHA reCAPTCHA". Открываем форум по FTP и производим следующие действия над файлами:

    Файл /sources/Register.php :

    Ищем:    


    function show_reg_form($errors = "") {
    global $ibforums, $DB, $std;
    

    Добавляем за ним:
require_once( 'recaptchalib.php' );
$publickey = "значение_вашего_открытого_ключа";

    В строке значения $publickey, в кавычках, помещаете значение открытого ключа(ключа сайта).

    Ищем:
if ($ibforums->vars['bot_antispam'] == 'gd')
{
$this->output = str_replace( "", $this->html->bot_antispam_gd( $regid ), $this->output );
}
else if ($ibforums->vars['bot_antispam'] == 'gif')
{
$this->output = str_replace( "", $this->html->bot_antispam( $regid ), $this->output );

    Добавляем за ним:
else if ($ibforums->vars['bot_antispam'] == 'rec')
{
$this->output = str_replace( "", recaptcha_get_html($publickey), $this->output );
}     

    Ищем:
function create_account()
{
global $ibforums, $std, $DB, $print, $HTTP_POST_VARS;

    Добавляем за ним:
require_once( 'recaptchalib.php' );
$privatekey = "значение_вашего_закрытого_ключа";
$resp = null;
$reCaptcha = new ReCaptcha($privatekey);

if ($_POST["g-recaptcha-response"]) {
$resp = $reCaptcha->verifyResponse(
        $_SERVER["REMOTE_ADDR"],
        $_POST["g-recaptcha-response"]
    );
}

    В строке значения $privatekey, в кавычках, помещаете значение закрытого ключа.

    Ищем:
//+--------------------------------------------
//| Check the reg_code
//+--------------------------------------------

if ($ibforums->vars['bot_antispam'])
{
if ($ibforums->input['regid'] == "")
{
$this->show_reg_form('err_reg_code');
return;
}

$DB->query("SELECT * FROM ibf_reg_antispam WHERE regid='".trim(addslashes($ibforums->input['regid']))."'");

if ( ! $row = $DB->fetch_row() )
{
$this->show_reg_form('err_reg_code');
return;
}

if ( trim( intval($ibforums->input['reg_code']) ) != $row['regcode'] )
{
$this->show_reg_form('err_reg_code');
return;
}

$DB->query("DELETE FROM ibf_reg_antispam WHERE regid='".trim(addslashes($ibforums->input['regid']))."'");
}

    Заменяем на:
//+--------------------------------------------
//| Check the reg_code
//+--------------------------------------------

if ($ibforums->vars['bot_antispam'])
{

if ($ibforums->vars['bot_antispam'] == 'rec')
{
if (!$resp->success)
{
$this->show_reg_form('err_reg_code');
return;
}
}
else
{

if ($ibforums->input['regid'] == "")
{
$this->show_reg_form('err_reg_code');
return;
}

$DB->query("SELECT * FROM ibf_reg_antispam WHERE regid='".trim(addslashes($ibforums->input['regid']))."'");

if ( ! $row = $DB->fetch_row() )
{
$this->show_reg_form('err_reg_code');
return;
}

$code = $row['regcode'];
$code_array = array();

$code_array = explode("+", $code);
$sum_result = intval($code_array[0]) + intval(substr($code_array[1], 0, strlen($code_array[1])-1));

if ( trim( $ibforums->input['reg_code'] ) != $sum_result )
{
 $this->show_reg_form('err_reg_code');
 return;
}

$DB->query("DELETE FROM ibf_reg_antispam WHERE regid='".trim(addslashes($ibforums->input['regid']))."'");

}
}  

    Одновременно ещё код патчится на исключение одной найденной уязвимости.

    Ищем конец файла, отмеченный так:
        ?>

    Добавляем перед ним:
function recaptcha_get_html($publickey)
{
return '<div align="center" class="g-recaptcha" data-sitekey="'.$publickey.'"></div>
<script src="https://www.google.com/recaptcha/api.js"></script>';
}


    Файл /sources/Admin/ad_settings.php :

    Ищем:
$SKIN->form_dropdown( "bot_antispam",
array(
 0 => array( '0'    , 'Не использовать'                  ),
 1 => array( 'gd'   , 'Расширенный (Требуется установка GD)'    ),
 2 => array( 'gif'  , 'Нормальный (Ничего не требуется)'  ),

),
$INFO['bot_antispam']
)

    Заменяем на:
$SKIN->form_dropdown( "bot_antispam",
array(
 0 => array( '0'    , 'Не использовать'                  ),
 1 => array( 'gd'   , 'Расширенный (Требуется установка GD)'    ),
 2 => array( 'gif'  , 'Нормальный (Ничего не требуется)'  ),
 3 => array( 'rec'  , 'Использовать reCAPTCHA'  ), 

),
$INFO['bot_antispam']
)

    Замена описана для русской версии, для английской ищется и заменятся аналогично.

    Файл /Skin/*/skin_register.php :

    Ищем все вхождения:
<!--{REG.ANTISPAM}-->

    Добавляем за ним везде, где нашли:
<!--{REG.RECAPTCHA}-->

    * в пути к файлу skin_register.php означает любой подкаталог(любые подкаталоги).

    Загружаем recaptchalib.php отсюда https://github.com/google/recaptcha/blob/1.0.0/php/recaptchalib.php и помещаем в каталог /sources

    После этого идём в Админцентр форума и меняем в разделе Системные настройки->Безопасность в списке Включить при регистрации флуд-контроль против скриптов/ботов? значение на Использовать reCAPTCHA и сохраняем изменения.

    Результат подключения новой "No CAPTCHA reCAPTCHA" по "отсечению" спамеров сказался немедленно. Если до этого при включенной старой капче reCAPTCHA(да и собственной капче IPB1) в сутки регистрировалось сотня и более ботов - то после её включения уже в течении пары суток не смогло зарегистрировать ни одного бота!
   

Подключение новой "No CAPTCHA reCAPTCHA" вместо старой reCAPTCHA

   Возможно у Вас уже подключена старая reCAPTCHA по известной методике. Изменить подключенную по это методике старую reCAPTCHA на новую "No CAPTCHA reCAPTCHA" тоже несложно. Сделаем это.

    Для начала идём на сайт Гугла вот по известному адресу https://www.google.com/recaptcha/admin для получения ключей. Да-да, ключи надо получать заново, старые ключи для прежней капчи не подходят для новой "No CAPTCHA reCAPTCHA"!
    В поле "Название" укажите удобное Вам название(я ставлю URL главного сайта). Затем выберите типа капчи "Invisible reCAPTCHA"(вот оно - главное отличие новых ключей от старых! старые ключи получаются если выбрать "reCAPTCHA V2"!). В поле "Домены" внесите Ваш домен(или домены), к которым собираетесь подключить "No CAPTCHA reCAPTCHA". Галку с пункта "Отправлять владельцам оповещения" можете как оставить - так и снять. Если не хотите лишних сообщения от Гугла - снимайте. Дальше нажимаем на "Регистрация" - и получаем ключи.

    Теперь открываем форум по FTP и производим следующие действия над файлами(с учётом предыдущего патча):

    Файл /sources/Register.php :

    Ищем:


$publickey = "значение_вашего_открытого_ключа";

    Заменяем значение $publickey на новое.

    Ищем:
require_once( 'recaptchalib.php' );
$privatekey = "значение_вашего_закрытого_ключа";
$resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);

    Заменяем на:
require_once( 'recaptchalib.php' );
$privatekey = "значение_вашего_закрытого_ключа";
$resp = null;
$reCaptcha = new ReCaptcha($privatekey);

if ($_POST["g-recaptcha-response"]) {
$resp = $reCaptcha->verifyResponse(
        $_SERVER["REMOTE_ADDR"],
        $_POST["g-recaptcha-response"]
    );
}

  Заменяем значение $privatekey на новое.


    Ищем:
if ($ibforums->vars['bot_antispam'] == 'rec')
{
if (!$resp->is_valid)

    Заменяем на:
if ($ibforums->vars['bot_antispam'] == 'rec')
{
if (!$resp->success)

    Ищем конец файла, отмеченный так:
        ?>

    Добавляем перед ним:
function recaptcha_get_html($publickey)
{
return '<div align="center" class="g-recaptcha" data-sitekey="'.$publickey.'"></div>
<script src="https://www.google.com/recaptcha/api.js"></script>';
}


    Загружаем новую recaptchalib.php отсюда https://github.com/google/recaptcha/blob/1.0.0/php/recaptchalib.php и заменяем ей старую в каталоге /sources.
    Старую библиотеку recaptchalib.php от новой отличить достаточно просто. Если открыть её в любом текстовом редакторе, то в старой будет написано внутри Copyright (c) 2007 reCAPTCHA, в моём экземпляре на 11-й строке и размер у него будет 9910 байт(такой у меня во всяком случае). В новой же будет написано Copyright (c) 2014, Google Inc., тоже на 11-й строке. И размер у неё будет 4574 байта(во всяком случае у того, что есть у меня - такой размер).

    Настройки в Админцентре в данном случае менять не нужно, новая "No CAPTCHA reCAPTCHA" начнёт работать сразу после изменения файла /sources/Register.php и замены библиотеки recaptchalib.php на новую.

Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе

Как сэкономить место на диске при использовании программы 2GIS

    Наверное нет уже человека, который бы не знал бы программу 2GIS. И достаточно много народа загружают её на компьютер - чтобы не обращаться в интернет при каждом просмотре. Естественно, чтобы данные были актуальными, надо обновлять данные каждый месяц. Однако мало кто догадывается, что при обновлении 2GIS можно сэкономить некоторое место на диске. Рассмотрим как это делается.
    1. Запускаем обновление данных и дожидаемся когда обновятся программа(если надо) и данные карт.
    2. Идём в каталог C:\Documents and Settings\All Users\Application Data\2GIS\2GISUpdate\Repository\Install\(C:\Users\All Users\Application Data\2GIS\2GISUpdate\Repository\Install\ в Windows7). Имейте в виду, что каталог Application Data - скрытый, так что включите отображение скрытых и системных каталогов и файлов при просмотре.
    3. В этом каталоге будут несколько подкаталогов. Минимум два - для программы и единственной карты. Максимум - на один больше чем карт. По названию можно определить для чего он - каталоги называются, например 2GISShell(для программы) или Moscow(для карты Москвы). Входим в каждый из них по очереди. В них тоже будет один или несколько подкаталогов вида 3.14.4.0 - для сохранения отдельных версий программы или карт. Стираем всё, что есть в каталоге. Сами каталоги лучше оставить - 2GIS сам их сотрёт при следующем обновлении.
    4. Обходим все подкаталоги в каталоге C:\Documents and Settings\All Users\Application Data\2GIS\2GISUpdate\Repository\Install\(C:\Users\All Users\Application Data\2GIS\2GISUpdate\Repository\Install\ в Windows7) и стираем все файлы что там есть. Я таким путём освобождаю при 3-х картах до 0.5Г дискового пространства при каждом обновлении.
    5. Не забываем это сделать при каждом новом обновлении.

Оригинал статьи находится тут.

Статья обсуждается на Всеобщем форуме в этом топе