Вторник, 2024-03-19, 4:20 PM

Поиск
Меню
Категории раздела
PHP [40]
Cкриптовый язык программирования общего назначения
MySQL [1]
Cвободная система управления базами данных (СУБД)
jQuery [8]
Библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML
CSS [60]
Cредство описания, оформления внешнего вида веб-страниц
JavaScript [161]
Прототипно-ориентированный скриптовый язык программирования
Веб-дизайн [2]
Проектирование пользовательских веб-интерфейсов для сайтов или веб-приложений
RegExp [1]
Регулярные выражения
SEO [2]
Продвижение и раскрутка сайтов. Заработок в сети.
C/C++ [3]
Компилируемый статически типизированный язык программирования общего назначения
Windows [4]
Программистам под ОС MS Windows
HGE [2]
Игровой движок HGE (Haaf's Game Engine)
Игровой дизайн [8]
Психология дизайна игр
Разработка игр [2]
Общие моменты, относящиеся к геймдеву
wxWidgets [2]
Библиотека инструментов для разработки кроссплатформенных приложений
PureBasic [10]
Кроссплатформенный компилятор и IDE для быстрой разработки
VST [6]
Steinberg's Virtual Studio Technology (VST)
iOS [1]
Mобильная операционная система, разрабатываемая и выпускаемая американской компанией Apple
Пиксельная графика [9]
Pixel art и все, что с ним связано
libGDX [2]
Кроссплатформенный открытый движок на Java, позволяющий создавать 2D и 3D игры под различные платформы, среди которых: Android, HTML5, Windows, Linux, iOS.
Поддержи проект!
Рекомендуем


Блог разработчика

1 2 3 ... 40 41 »
YUI - это еще одна интересная библиотека на Javascript. Основное ее предназначение - создание интерактивных клиентских веб-приложений.

Смотрим примеры и качаем тут: http://yuilibrary.com/
Категория: JavaScript | Просмотров: 647 | Добавил: pop | Дата: 2014-08-26

Кто еще не пробовал на вкус библиотеку Raphaël - обязательно попробуйте. Библиотека создана для облегчения манипулирования векторной графикой (SVG), отрисовки графиков и прочих полезных вещей:

http://raphaeljs.com/
Категория: JavaScript | Просмотров: 713 | Добавил: pop | Дата: 2014-08-26

Во-первых, для того, чтобы определить движок сайта, можно использовать онлайн-сервисы. Я рекомендую для этого вот эти два:
  • http://2ip.ru/cms
  • http://www.itrack.ru/whatcms/

Во-вторых, можно установить адд-он для Firefox:
https://addons.mozilla.org/ru/firefox/addon/wappalyzer/
Замечу, что адд-он умеет определять не только движок, но и показывает какие скрипты работают на фронт-энде

В-третьих, если движок самописный, то вам не помогут ни сервисы, ни адд-оны
Категория: SEO | Просмотров: 644 | Добавил: pop | Дата: 2014-08-26

drupal_basename($uri, $suffix = NULL) — возвращает имя файла. Это аналог PHP функции basename() за исключением того, что поддерживает stream wrappers и имена файлов с не US-ASCII символами.
drupal_basename('sites/default/files/test.jpg'); // test.jpg
drupal_basename('public://test.jpg'); // test.jpg
drupal_basename('/drupal/sites/default/files/test.jpg'); // test.jpg

drupal_dirname($uri) — возвращает директорию файла. Это аналог PHP функции dirname() за исключением того, что поддерживает stream wrappers.
drupal_dirname('sites/default/files/test.jpg'); // sites/default/files
drupal_dirname('public://test.jpg'); // public://
drupal_dirname('/drupal/sites/default/files/test.jpg'); // /drupal/sites/default/files

drupal_realpath($uri) — возвращает абсолютный путь к файлу. Может работать с stream wrappers. Возвращает FALSE если файла не существует. Не рекомендуется к использованию.
drupal_realpath('sites/default/files/test.jpg'); // /drupal/sites/default/files/test.jpg
drupal_realpath('public://test.jpg'); // /drupal/sites/default/files/test.jpg
drupal_realpath('/drupal/sites/default/files/test.jpg'); // /drupal/sites/default/files/test.jpg

file_build_uri($path) — добавляет к пути файла дефолтный протокол (public://).
file_build_uri('test.jpg'); // public://test.jpg

file_create_filename($basename, $directory) — возвращает полный путь для будущего файла с именем $basename в директории $directory. Если файл с таким именем существует, то к имени файла добавляется порядковый номер. Поддерживает stream wrappers.
// если файл test.jpg не существует в указанной директории
file_create_filename('test.jpg', 'sites/default/files'); // sites/default/files/test.jpg
file_create_filename('test.jpg', 'public://'); // public://test.jpg
file_create_filename('test.jpg', '/drupal/sites/default/files/'); // /drupal/sites/default/files/test.jpg
 
// если файл test.jpg существует в указанной директории
file_create_filename('test.jpg', 'sites/default/files'); // sites/default/files/test_0.jpg
file_create_filename('test.jpg', 'public://'); // public://test_0.jpg
file_create_filename('test.jpg', '/drupal/sites/default/files/'); // /drupal/sites/default/files/test_0.jpg

file_create_url($uri) — возвращает URL файла. Поддерживает stream wrappers. Не поддерживает абсолютные пути к файлу.
file_create_url('sites/default/files/test.jpg'); // http://example.com/sites/default/files/test.jpg
file_create_url('public://test.jpg'); // http://example.com/sites/default/files/test.jpg
file_create_url('/drupal/sites/default/files/test.jpg'); // /drupal/sites/default/files/test.jpg

file_destination($destination, $replace) — возвращает путь к существующему файлу в зависимости от значения $replace. Если файла $destination не существует, то функция возвратит то, что передано первым аргументом.
file_destination('sites/default/files/test.jpg', FILE_EXISTS_REPLACE)); // sites/default/files/test.jpg
file_destination('sites/default/files/test.jpg', FILE_EXISTS_RENAME)); // sites/default/files/test_0.jpg
file_destination('sites/default/files/test.jpg', FILE_EXISTS_ERROR)); // FALSE
file_destination('public://test.jpg', FILE_EXISTS_REPLACE)); // public://test.jpg
file_destination('public://test.jpg', FILE_EXISTS_RENAME)); // public://test_0.jpg
file_destination('public://test.jpg', FILE_EXISTS_ERROR)); // FALSE
file_destination('/drupal/sites/default/files/test.jpg', FILE_EXISTS_REPLACE)); // /drupal/sites/default/files/test.jpg
file_destination('/drupal/sites/default/files/test.jpg', FILE_EXISTS_RENAME)); // /drupal/sites/default/files/test_0.jpg
file_destination('/drupal/sites/default/files/test.jpg', FILE_EXISTS_ERROR)); // FALSE

file_directory_temp() — возвращает путь к временной директории, указанной на странице admin/config/media/file-system. Не рекомендуется использовать.
file_directory_temp(); // /tmp

file_munge_filename($filename, $extensions, $alerts = TRUE) — если файл имеет двойное расширение, например file.php.jpg, то функция добавит нижнее подчёркивание к первому расширению, во избежание взлома при криво настроенном апаче.
file_munge_filename('sites/default/files/exploit.php.pps', ''); // sites/default/files/exploit.php_.pps
file_munge_filename('public://exploit.php.pps', ''); // public://exploit.php_.pps
file_munge_filename('/drupal/sites/default/files/exploit.php.pps', ''); // drupal/sites/default/files/exploit.php_.pps

file_unmunge_filename($filename) — отменяет эффект от функции file_munge_filename().
file_unmunge_filename('sites/default/files/exploit.php_.pps'); // sites/default/files/exploit.php.pps
file_unmunge_filename('public://exploit.php_.pps'); // public://exploit.php.pps
file_unmunge_filename('/drupal/sites/default/files/exploit.php_.pps'); // drupal/sites/default/files/exploit.php.pps

file_stream_wrapper_uri_normalize($uri) — нормализует URI файла: удаляет завершающий слэш из имени директории и исправляет тройной слэш в протоколе.
file_stream_wrapper_uri_normalize('sites/all/files/'); // sites/all/files
file_stream_wrapper_uri_normalize('public:///test.jpg'); // public://test.jpg

file_uri_scheme($uri) — возвращает протокол из URI.
file_uri_scheme('public://test.jpg'); // public
file_uri_scheme('temporary://'); // temporary

file_uri_target($uri) — возвращает часть пути без протокола.
file_uri_target('public://test.jpg'); // test.jpg
file_uri_target('temporary://test.jpg'); // test.jpg
file_uri_target('sites/default/files/test.jpg'); // FALSE

file_valid_uri($uri) — возвращает TRUE если в $uri валидный Drupal URI.
file_valid_uri('public://test.jpg'); // TRUE
file_valid_uri('foo://test.jpg'); // FALSE
file_valid_uri('sites/default/files/test.jpg'); // FALSE
Категория: PHP | Просмотров: 1254 | Добавил: pop | Дата: 2014-06-16

Добавить в template.php своей темы:
/**
 * Implements hook_js_alter().
 */
function THEMENAME_js_alter(&$javascript) {
 $javascript['misc/jquery.js']['data'] = '//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js';
 $javascript['misc/jquery.js']['version'] = '1.8.3';
 $javascript['misc/jquery.js']['type'] = 'external';
 $javascript['misc/jquery.js']['preprocess'] = FALSE;
}
Сбросить кэш.
Если не нравится использовать CDN гугла, то всё ещё проще:
/**
 * Implements hook_js_alter().
 */
function THEMENAME_js_alter(&$javascript) {
 $javascript['misc/jquery.js']['data'] = path_to_theme() . '/js/jquery-1.8.3.min.js';
}
Категория: PHP | Просмотров: 799 | Добавил: pop | Дата: 2014-06-16

Функция, которая получает размер удалённого (находящегося на другом сервере) файла, не скачивая его на сервер:
function get_remote_filesize($url) {
 $result = drupal_http_request($url, array('method' => 'HEAD'));
 if (empty($result->error) && isset($result->headers['content-length'])) {
 return $result->headers['content-length'];
 }
}

Пример использования:
echo get_remote_filesize('http://img.yandex.net/i/www/logo.png') . ' bytes' // 3729 bytes
Категория: PHP | Просмотров: 793 | Добавил: pop | Дата: 2014-06-16

Даже объяснять ничего не буду) Код в полном тексте статьи
Категория: PHP | Просмотров: 879 | Добавил: pop | Дата: 2014-05-01

Бывают случаи, когда ADB наотрез отказывается видеть устройство и отладка невозможна. Вроде и дрова встали, как надо, а гаджет в списке не появляется. Первую часть решения проблемы расписали здесь, и мы ей и воспользуемся.

Итак. Android SDK у вас скорее всего стоит. Если не стоит, то берем тут. Если все SDK не требуется, качаем только драйвер. Скачали, распаковали, а теперь ищем папку usb_driver (в SDK она лежит в extras\google\). Открываем файл android_winusb.inf на редактирование. Ищем строки
;Google Nexus One
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_0D02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_0D02&MI_01
%SingleAdbInterface%        = USB_Install, USB\VID_18D1&PID_4E11
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_4E12&MI_01

Копируем их, вставляем. Заменяем «Google Nexus One» в комментарии на имя своего девайса (для собственного удобства). Теперь нам нужны значения VID и PID для нашего устройства. За ними идем в Диспетчер устройств и ищем наше устройство (Android Composite ADB Interface, Android, Samsung Android Phone — у кого как). В свойствах устройства мы найдем искомое:


Заменяем в inf-файле в скопированной части Vid и Pid на значения из свойств устройства (во всех четырех местах).
%SingleAdbInterface% = USB_Install, USB\VID_2207&PID_0010 
%CompositeAdbInterface% = USB_Install, USB\VID_2207&PID_0010&MI_01 
%SingleAdbInterface% = USB_Install, USB\VID_2207&PID_0010 
%CompositeAdbInterface% = USB_Install, USB\VID_2207&PID_0010&MI_01

Сохраняем файл. Теперь можно обновить драйвер. Либо удаляем устройство в Диспетчере и указываем путь вручную к нашему драйверу, либо делаем «Обновить драйвер» из того же Диспетчера и опять таки подсовываем ему наш путь.

Казалось бы все — выдернуть вставить устройство и все должно запеть. Можно для верности перезапустить adb и посмотреть список девайсов (adb.exe находится в %android-sdk%\platform-tools\):
> adb kill-server
> adb devices

Но не факт, что этого хватит. Если устройства в списке нет, открываем файлик %USERPROFILE%\.android\adb_usb.ini и на новой строке пишем наш Vid, предваряя его 0x:
0x2207

Все, сохраняем файл, перезапускаем ADB и гаджет и радуемся появлению устройства в списке.

Возникли вопросы или устройство не появилось? Пишите в комментариях, попробуем разобраться
Просмотров: 6181 | Добавил: pop | Дата: 2014-02-04

Мини-демо — 3D средствами CSS3:


Live demo: 3d test
Просмотров: 867 | Добавил: pop | Дата: 2013-12-20

Беда многих дешевых планшетов на Android — глюк заряда батареи. При работе от сети все замечательно, а когда отключаешь и запускаешь приложения — планшет тухнет. Как же так? Ведь он только что показывал 100% заряда! Часто отмечается еще один симптом: без подключения зарядки индикатор показывает 100%, а при подключении — 99%. Это дело можно смело назвать «зависший индикатор батареи».

Как быть? Самый простой способ — попробовать полностью разрядить батарею и полностью зарядить. Заряжать рекомендуют посредством зарядного устройства, а не USB-шнурком.

Но этот способ может и не сработать. Поэтому предлагают второй способ — получить права суперпользователя, рута, и путем хитрых манипуляций с вытаскиванием/втаскиванием батареи и удалением файла data/system/batterystats.bin достичь сброса счетчика батареи. Разбирать гаджет желания нет, это вам не смартфон, да и удаление файлика, говорят, смысла не несет, т.к. в нем просто собирается статистика, кто сколько из приложений съел батареи. Вполне возможно, что батарея вообще припаяна (на китайских планшетах это обычное дело).

Но есть и третий способ. Он также требует рута, но разбирать гаджет не требуется. Итак, пошаговая инструкция, испытанная на себе. Способ, насколько я понял, достаточно универсален, по крайней мере для четвертого андроида (я не слишком вдавался в спецификации). Для тех кто боится потери гарантии и того, что гаджет умрет, хочу сказать сразу — закройте эту страницу и несите вашего зверька в сервисный центр. Слабакам здесь не место.

1. Если у вас есть рутовые права, переходите к пункту 2. Рекомендую поискать как получить рута на вашем гаджете, чтобы не попасть впросак. Я воспользовался универсальным инструментом — качаем (если не нашли другого способа) вот этот файл. Не распаковывая, закидываем на SD-карту, которую вставляем в отключенный планшет. Одновременно нажав кнопки включения и понижения громкости (и удерживая их) мы попадем в recovery-меню Андроида. В этом меню можно попробовать вернуться к заводским настройкам, но лично мне это не помогло (как и обновление прошивки). Нам нужен пункт apply update from sdcard. Навигация по меню очень простая — переходы по пунктам происходят по нажатию клавиш громкости, а выбор — кнопкой выключения. Выбираем пункт, о котором я говорил ранее, заходим в него и видим наш архив. Таким же образом выбираем его и ждем, пока Android не станет податливей. После того, как система загрузится, вы увидите в списке приложений Root Explorer. Нам он не нужен, но это уже знак)

2. Итак, мы root и нам потребуется терминал, чтобы вводить команды. Для этих целей я поставил Android Terminal Emulator. Разрядите планшет на самый минимум (хотя, при зависшем индикаторе, это и так сделано).

3. Запускаем терминал и выполняем четыре команды. После каждой жмем Enter (вы же умеете пользоваться командной строкой, правда?)

su
echo b8 > /sys/devices/i2c-2/2-0034/axp20_reg
echo b820 > /sys/devices/i2c-2/2-0034/axp20_reg
reboot

После первой вас попросят подтвердить, что вы действительно разрешаете выполнение дальнейших команд как суперпользователь. Надо согласиться (Allow). После последней планшет перезагрузится. Что делают команды? Обнуляют счетчики, которые использует драйвер управления электропитанием.

4. После перезагрузки вы увидите, что заряд батареи ни разу не 100%, а почти (или совсем) на нуле. Остается выключить планшет, воткнуть зарядное устройство и зарядить планшет полностью (часа три, у кого как).
Просмотров: 8867 | Добавил: pop | Дата: 2013-12-04