Страницы

Поиск по вопросам

среда, 15 апреля 2020 г.

Актуальна ли сейчас такая фишка?

#jquery #дизайн

                    

Делал свежий дизайн, с использованием jQuery, решил дать полную свободу юзеру, и
замутил блок управления отображением сайта, увеличение шрифта, цветовые схемы, убираю
сайдбар, фоновую картинку меняю. Но мне сказали, что это глупо и совсем не модно сейчас,
это не актуально и никто не будет пользоваться блоком, главное простота, а не юзабилити.
Блок выезжает из-за угла по событию hover и не мешает в принципе, единственная трудность
- это редактировать каждую тему при каких-либо изменениях в основной.

Идея пришла после прочтения

[данной статьи](http://www.w3school.ru/blog/design-showcase/style-switchers-are-back-ideas-examples.html)
За рубежём почему-то это не осуждают, и основным применением это пользуется именно
в домашних страничках и дизайн студиях, чтобы "показать свою власть над стилем" =)



Что скажете?



    


Ответы

Ответ 1



В такой фишке есть смысл на больших порталах, типа yandex, google, yahoo, которыми люди пользуются каждый день, и следовательно в настройке которых на свой вкус есть смысл. Но в любом случае это не должна быть какая-то выезжающая панель, а как максимум ссылка типа "Настроить внешний вид сайта".

Ответ 2



А какой смысл? По сути функциональности сайту это не добавляет (имхо, кастомизировать отображение сайта, действительно, вряд ли кто-то будет, так чисто попробовать раз). А вот где бы это было действительно полезно, так это на специализированном портале с направлением в верстку, или дизайн, или еще куда. Когда появляется именно цель использования, отличная от "чтобы поиграться". Иначе это просто слишком перегруженные наворотами дизайн. Зато как ваша личная фишка, этот блок мог бы иметь место! Только размером поменьше, или использованный для других целей (например, доступ к "быстрым настройкам" вашего сайта, но только не внешнего вида, хотя кое-что и здесь не исключено), имхо. А еще я не понимал людей, которые везде кричат, что это не модно или глупо.

Ответ 3



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

Ответ 4



Просто эта панель — перебор. Шрифт делается больше меньше нажатием Ctrl++ или колесико мыши, работает в любом браузере, и это то, что пользователь пойдет делать первым делом, а не искать панель. Так что лучше проверьте, что бы сайт скейлился нормально, и ничего никуда не вылазило. На сайдбар вешается маленькая стрелочка в верхнем углу скрывающая и раскрывающая его как в картах google, и то, это нужно далеко не всегда. Темы если и прикручивать, то это как правило небольшие цветовые схемы, перегружающие маленький кусочек стилей, типа: бекграунд шапки, цвет фона и линков. Все. Координально менять интерфейс ни в коем случае не стоит.

Ответ 5



Бессмысленная фигня. Если вы не можете сделать нормальный дизайн к сайту - это вам минус. Давать юзеру его изменять это верх глупости. Максимум можно дать несколько тем на выбор. А так вы просто захламляете сайт лишним функционалом. Это все равно что в терминале сделать возможность слушать музыку через наушники.

Ответ 6



Не слушайте никого, делайте эту фишку, но не как основную в вашем сайте. Очень маленькую и незаметную, и никогда не делайте ее выезжающей откуда-то, а то это смотрится как реклама. Если очень хочется - сделайте одну кнопочку маленькую, а в самом разделе можно даже так сделать: http://jqueryui.com/themeroller/

Максимальное количество символов в атрибуте alt у <img>?

#html #css

                    
Какое максимальное количество символов можно добавить в атрибут alt у метки ?
    


Ответы

Ответ 1



В HTML 4 стоит ограничение в 64Кб: http://www.w3.org/TR/REC-html40/sgml/sgmldecl.html . В HTML 5, похоже, то же самое.

Авторские права.

#права #лицензирование

                    
Если я в части своего проекта использую кусок кода, взятый из свободного доступа
(без указания на него лицензии) то нарушил ли я какие-либо установленные законом рамки? 
Или должен ли я указать в своем проекте автора, чей кусок кода я взял? 
И имеет ли он право требовать с меня обязательного указания своего соавторства (если,
в том месте где я брал код не было явно указано его авторство)? 
Может ли он потребовать убрать не использовать его наработки? 
Как можно доказать свое авторство, на код, свободно размещенный в интернете? 
Если мой код, очень поход на код какого-то разработчика, и он выражает свое недовольство? 
Как быть в этом случае? 
Как понять где начинаются и заканчиваются рамки авторского права, относительно исходного
кода?    


Ответы

Ответ 1



Если код просто выложен на сайт без лицензии, то вы не можете использовать его никак, кроме как просто читать: авторские права остаются за автором кода, и только он может определять, что с его кодом можно делать. Полностью определять. Таким образом, если автор захочет, он может потребовать, чтобы вы указали его соавтором; а может потребовать, чтобы не указывали; также он может запретить использовать свой код (например, сказав, что код выложен только в обучающих целях). Всё в руках автора. Если код выложен без лицензии, это означает, что автор просто не удосужился сообщить свои условия использования кода, а вовсе не то, что код можно использовать на ваше усмотрение. Обратитесь к автору за разъяснением. Существует понятие "общественного достояния" (public domain), что означает, что автор отказывается от своих прав на код, и любой может делать с этим кодом всё, что хочет. Но в таком случае это должно быть явно написано на сайте. Кстати, насколько я знаю, в России нельзя отказаться от авторских прав, то есть нельзя передать своё творение в общественное достояние - оно может стать общественным достоянием только через 70 лет после смерти автора. В любом случае, если лицензия кода не указана, стоит обратиться к автору напрямую, и узнать условия использования его кода. Если ваш проект серьёзный и большой, то эти условия желательно ещё и юридически оформить, чтобы не было проблем в дальнейшем. Насчёт похожих кодов, и "где начинаются и заканчиваются рамки". В некотором роде философский вопрос. Здесь, на мой взгляд, ничего нельзя сказать, кроме следующего циничного высказывания: в суде доказать можно всё, что захочешь, если есть адвокаты и деньги. Некоторые пытаются прочитать закон сотню раз, чтобы понять великую идею, которая была в нём заложена, и затем логически непротиворечиво вывести эти самые рамки. Законодатели пытаются упомянуть в законе все возможные случаи, которые только могут быть (а авторы программ пишут огромные тексты лицензий, где написано всё на все случаи жизни) - и всё равно и те, и другие что-нибудь просмотрят, и получится зацепка, с помощью которой можно будет толковать закон/лицензию неоднозначно. Идеализированные представления об авторском праве, защите интеллектуальной собственности и вообще, о праве, на мой взгляд, не имеют никакой рациональной основы, и противоречат сами себе. (Анархизм, да; и вообще спорный вопрос, поэтому не буду продолжать). Поэтому: не полагайтесь на ваше суждение о вещах, которые автор умолчал - напрямую спросите его об этом; юридически оформляйте всё, что только можно; имейте деньги и адвокатов.

Ответ 2



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

Какие проекты можно создать на monotouch?

#mono #monotouch #monodroid #c_sharp

                    
Доброго времени суток. Хотелось бы узнать возможно ли с помощью mono создать полноценные
игры, приложения для мобильных устройств? Или это лишь затравка для создание просты
приложений? Возможно ли с помощью mono делать полноценные игры с физикой и анимацией?
Если да, то как это делается.. Например openGl, что то похожее на XNA? Если можно со
ссылками.    


Ответы

Ответ 1



Есть MonoGame(Бывший XnaTouch), есть аналогичный ExEn, тоже еще одна реализация Xna под MonoTouch. А самое интересное, скоро должен выйти DeltaEngine, очень крутой движок покрывающий практически все платформы.

Как получить URL посещённых ресурсов?

#javascript #chrome_extension

                    
Всем привет.
Идея следующая: есть расширение Chrome, оно передаёт все посещённые URL на сервер,
каждый пользователь имеет свой id. Можно, конечно, использовать Историю браузера, но
этот подход не гибкий. Каким образом можно реализовать подобное? Интересует коллегиальное
решение, как общая концепция, так и технологии для реализации. Сам Java и  С++ developer,
в WEB только въезжаю, поэтому, может, вопрос глуповат-). Но прошу отнестись с пониманием.
Спасибо.
PS Это не инструмент слежки, необходимо для исследования.    


Ответы

Ответ 1



Можно, конечно, использовать Историю браузера, но этот подход не гибкий. Вполне гибкий. Хром предоставляет специальный API для работы с историей просмотров - это chrome.history. Там же есть ссылка на пример работы с API. Можно создать расширение, которое будет работать всегда, когда запущен Хром, и периодически (скажем, раз в день) в определенное время извлекать историю просмотров, прошедших с последней активации расширения, анализировать их и отсылать данные на сервер.

Ответ 2



Как вариант - опять же расширение для хрома которое будет при каждой загрузке страницы отправлять серверу текущий урл и id пользователя (id можно хранить в localStorage). На сервере анализировать урл и писать его в базу привязывая к пользователю с указанным id.

Оптимизация php и mysql

#php #оптимизация #mysql

                    
И опять вопросы по работе с mysql и php:
1) Есть два запроса:
mysql_query('select * from `table` where `id`='.$id.' and `user_id`='.$_SESSION['id']);
mysql_query('select * from `table` where `id`='.$id.' and `user_id`='.$_SESSION['id'].'limit
0, 1');

Первичный ключ - id. Имеет ли смысл писать limit 0, 1 в конце запроса или это не
ускорит запрос?
2) В случае уже полученных данных:
$ar = array();
$res = mysql_query('select * from `table` where `id`<30');
while($ar = mysql_fetch_assoc($res)){}

Что лучше использовать: mysql_num_rows($res) или sizeof($ar) ?
3) Зачем нужен mysql_fetch_array, если есть mysql_fetch_assoc и mysql_fetch_row?
По идее, эти две функции по отдельности работают быстрее?
4) При организации, допустим, блогов, разумно ли вынести посты блогов в отдельные
файлы, а комментарии оставить в БД? Просто тогда получается, что при выводе последних
блогов одновременно будет вестись работа как с БД, так и с файлами, что мне не нравится.
Тем более, что анонс все равно придется писать в БД.
5) Определение глобальных переменных в функции - довольно медленная вещь. Можно ли
ускорить работу функции, загнав ссылки на нужные переменные в массив и определив в
функции глобальным только новый массив? То есть, было:
function f() {
    global $ar1, $ar2, $ar3;
}

Стало:
$all = array('ar1' => &$ar1, 'ar2' => &$ar2, 'ar3' => &$ar3);
function f() {
    global $all;
    $ar1 = $all['ar1'];
}

Если целесообразность некоторых вопросов у вас вызвала недоумение, считайте, что
я любитель экономить на спичках.    


Ответы

Ответ 1



1) Имеет смысл сделать так: mysql_query('select * from `table` where `id`='.$_SESSION['id'].' limit 0,1'); Только исключите в запросах *, тогда будет экономия уже не на спичках :) 2) Согласен с @mozzart 3) mysql_fetch_array работает быстрее, чем assoc, т.к. добавляет только индексы в массив. 4) Согласен с @mozzart 5) Скорее вот так быстрее: function (&$ar1, &$ar2, &$ar3) { ... } Пример: class Api { private $db; public function test() { // Этой функции Вы собирались передать get и post $this->db; // объект бд } } или так: class Api extends DB { public function test() { $this->query(); } } class DB { public function query() { ... } }

Ответ 2



1) Смысл есть 2) Если нужно просто получить количество записей, то логичнее и оптимизированней использовать mysql_num_rows, если все записи получены в массив, то тогда конечно - sizeof 3) Не проверял... 4) Если хранение файлов подразумевает организацию кэширование, то тогда да. Грубо говоря, работа с файлами происходит намного быстрее чем с БД 5) Первый вариант быстрее

Оптимизация алгоритма вычисления “разности” списков IP-диапазонов

#алгоритм #java

                    
Здравствуйте!
Понятия

IPAddressRange - Диапазон IP-адресов, задан в виде network/mask или ipFirst, ipLast
(но в итоге все равно приводится ко второму виду). Так же подразумевается, как некоторое
множество (совокупность) последовательных (упорядоченных) чисел (числовая интерпретация
IP-адресов), заданная двумя значениями, первым и последним из диапазона (прощу прощения
за сложное пояснение)
List - Список IP-диапазонов (множеств)

Что имеем:

Список IP-диапазонов - база
Список IP-диапазонов - исключения
Функция выполняющая вычитание множеств и возвращающая ноль, один или два диапазона
Язык программирования - Java

Что нужно сделать:
Из первого списка вычесть все вхождения второго списка (т.е. обычная разность множеств),
алгоритм составлен (но еще не реализован), базовые классы и методы для реализации имеются. 
Примерно алгоритм выглядит так:

Выбираем последовательно элементы из списка исключения
Для каждого элемента из списка база проверяем, входит ли выбранный элемент списка
исключения в множество (сравниваем границы)
Если не входит - добавляем во временный список элемент из база
Если входит - выполняем разность множеств
"Отработавший" элемента списка база заменяется на новый(е) (два случая рассматривается:
границы элемента из исключения больше или равны границам элемента из база (получаем
0 (обе границы - >=) или 1 (одна из границ - >=) новый элемент), границы элемента из
исключения < границ элемента из база (получаем 2 новых элемента))
Новые элементы добавляются во временный список
Элемент списка исключения удаляется, когда пройдет все элементы списка база, элементы
из временного списка переносятся в список база, процедура повторяется

Хотелось бы оптимизировать мое решение, открыт для идей и наставлений.    


Ответы

Ответ 1



Разделить IPv4 и IPv6 интервалы и обрабатывать их отдельно Надо понимать, что каждый конец интервала - это просто long числа. Предположим, у нас есть реализация для получения такого числа для любого из концов. Предполагаем, что интервалы заданы верно (first <= last) Сортируем списки интервалов по их началам как long числам Идём по спискам по порядку по обоим спискам. Почти как в известной задачке про книги на полках и попутно строим третий список. Не забываем о возможности пересечений соседних интервалов в обоих списках. Сложность зависит от типа применяемой сортировки, но она будет лучше, чем M * N в случае, если M и N достаточно велики (понятно, что если списки 3 на 2, то быстрее будет просто всех со всеми сравнить).

Ответ 2



Как обещал в своем комментарии подумал. @cy6erGn0m в своем ответе (на мой взгляд) оптимальный алгоритм описал. Плюс к этому я обязательно добавил бы после сортировки диапазонов списка (п. 4 у @cy6erGn0m) СЛИЯНИЕ пересекающихся диапазонов. Это проводится за один проход списка и может сильно сократить его размер (вплоть до одного элемента, как в Вашем комментарии: "база" - 0.0.0.0 - 255.255.255.255 и 10.10.10.0 - 10.10.10.255). Более того (как мне кажется) реализация п.5 тоже станет проще. Далее за один параллельный проход обоих списков из множества базы исключаем элементы множества исключений. Количество операций можно оценить в N*log(N) + M*log(M) + M + N + m + n (m, n - количество диапазонов после слияния).

Кеширование в Django

#python #django

                    
Не получается закешировать данные.
Делаю так (ctype.id=158, objects=[данные в QuerySet формате]):
from django.core.cache import cache
cached_objects = cache.get('top_rating_%s'%ctype.id)   #вынимаем из кеша
if cached_objects is None:  #Если кеш пуст, то...
  #Тут манипуляция данными
  cache.set('top_rating_%s'%ctype.id, objects, time=1800)  #Кладем в кеш значение objects
  return objects #Возвращаем objects
else:
  return cached_objects #Возвращаем значение из кеша

Пробовал перевести данные из типа QuerySet в list:
...
objects = list(objects) #Преобразую
cache.set('top_rating_%s'%ctype.id, objects, time=1800) #Кладу в кеш
...

В обоих случаях в кеш ничего не сохранялось.
Для проверки пробовал просто положить в кеш строку, все отлично сработало, в кеше
значение прожило ровно столько, сколько указал во времени жизни.    


Ответы

Ответ 1



Кеш он глупый, умеет хранить только базовые типы данных. Поэтому сложные структуры которые зависят от классов или типов указанных в приложении нужно сериализовать перед записью в кеш и десериализовать после. Сериализация объектов в Django Также можно воспользоваться модулем pickle

Ответ 2



Видимо, все зависит от бэкенда, т.к. за сериализацию данных каждый бэкенд отвечает сам. К примеру, с memcache, приведенный выше код, должен работать, т.к. memcache не скалярные данные сериализует при помощи pickle. UPD. Проверил на django 1.3, python 2.7 - все бэкенды используемые в django автоматически сериализируют объекты, т.ч., видимо, у вас где-то ошибка.

Регулярное выражение для получения содержимого между тегами tr

#php #регулярные_выражения

                    
Здраствуйте, подскажите регулярное выражение для получения содержимого между тегами
tr /tr, с помощью preg_match_all, между ними могут встречаться все символы, кроме вышеуказаных
тегов, символов неопределенное количество (от 1 до бесконечности).
И если это возможно, то и в случае если между ними могут быть размещены таблицы (т.е.
могут существовать теги tr /tr).    


Ответы

Ответ 1



PHP, регулярные выражения. Извлечение строк между тегами.

Ответ 2



Честно говоря, не силён в этом, но мне кажется как-то так... if (preg_match('|(.*)|sei', $str, $arr)) $tr = $arr[1]; else $tr='';

Android: root-доступ программно

#android #java

                    
Собственно вопрос: кто-нибудь смог получить права root на девайс программно?
Я видел скрипт на sh, с которым еще возиться и возиться, и это все что нагуглилось.
Видимо подобные вещи не афишируются и все же интерес огромный, ибо порой полезно, особенно
для написания системных тулз.    


Ответы

Ответ 1



Вы не смотрели пример DeviceAdmin из API Demos? Там для получения используется получение прав администратора через специальный диалог. Я точно не знаю то ли это, что вам нужно, но думаю может пригодиться ... В доках также пишут что есть возможность получить такие права, начиная с Android 2.2

Ответ 2



Получение привилегий делается через вызов системной программы su (например с помощью функции system или exec). В рутованный телефон эта программа устанавливается с suid-битами. Если взять данную программу из cyanogenmod, она предварительно спрашивает у пользователя, хочет ли он наделить привилегиями вызвавшее её приложение. Пример вызова из java: https://stackoverflow.com/a/8750977/1566316

Сервер с JSON API. Как сделать правильно и безопасно.

#json #безопасность #шифрование

                    
Я хочу сделать сервер, который будет отдавать данные в формате JSON. (Как например
у Github.com).
Но проблема в том, что мне необходимо защитить передаваемые данные от перехвата.
Кроме того доступ к некоторым возможностям будет выборочным. (Т.е. нужна аутентификация
и авторизация).
Как это сделать? Можно использовать любые технологии, но желательно не слишком маргинальные.    


Ответы

Ответ 1



Авторизация по сложным паролям-токенам (средствами вашего кода) + HTTPS средствами apache+mod_ssl. Естественно, если клиент - браузер рядового пользователя - потребуется валидный сертификат. Если же использовать нешифрованный протокол - то можно пытаться защитить авторизацию через хеш на клиенте и рендомную "соль". Опять таки - все зависит от клиента. Если это браузер - решение должно быть максимально стандартным. Если коммутация сервер-сервер - тогда что угодно, вплоть до v3 SSL auth(обмен сертификатами).

Как сделать генератор случайных чисел, выдающий одинаковые значения при нескольких запусках?

#javascript #алгоритм #случайные_числа

                    
Посоветуйте, как сделать псевдослучайный генератор, иницилизирующийся числом, с помощью
которого можно сгенерировать последовательность чисел (несколько тысяч чисел от 0 до
9). Основная задача чтобы при запуске этого же генератора с таким же числом инициализации
он выдавал те же самые значения.    


Ответы

Ответ 1



Простейший вариант: var num; // очень большое простое число. var seed; // затравка - то самое инициализирующее число. var start_number; // основа var counts = new Array(); var max_num = 10; // Инт, который не превосходит наше число. У вас 0-9 числа. for(var i=0; i<1000; i++){ counts[i] = (Math.pow(start_number+i,seed)%num)%max_num; } Механизм простой: возводим основу, изменяемую каунтером в степень затравки и берем остаток от деления на большое число. Потом берем последние несколько цифр(в нашем случае - одну). Как можно оптимизировать: бинарное возведение в степень(пользуясь тем, что у нас кольцо) Замечания: 1) num должен быть достаточно большим, чтобы обеспечить разнообразие. 2) число в степени затравки должно, тем не менее, превосходить это простое число. 3) от основы можно отказаться вовсе, если счет инкрементора начинать с 2, а seed взять, хотя бы, от ~20

Ответ 2



И ведь не надоедает людям изобретать не то что велосипеды, но даже лапти... Линейный конгруэнтный метод.

Ответ 3



Вопрос успешно обсуждался на оригинальном SO: https://stackoverflow.com/questions/424292/how-to-create-my-own-javascript-random-number-generator-that-i-can-also-set-the-s

Книга по OpenGL [закрыт]

#книги #opengl

                            
             
                
                    
                        
                            Закрыт. На этот вопрос невозможно дать объективный ответ.
Ответы на него в данный момент не принимаются.
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Переформулируйте вопрос,
чтобы на него можно было дать ответ, основанный на фактах и цитатах, отредактировав его.
                        
                        Закрыт 4 года назад.
                    
                
        

Подскажите пожалуйста более-менее актуальную книгу по OpenGL желательно чтобы там
была расписана работа с шейдерами и их встраивание в приложение , можно C++ или Java    


Ответы

Ответ 1



Довольно доходчиво изложены основы OpenGL в этой книге. По шейдерам лучше отдельную книгу читать, например эту: "OpenGL. Трехмерная графика и язык программирования шейдеров. Для профессионалов" А ещё тут есть несколько полезных уроков. А вообще, я бы порекомменодовал Вам пользоваться XNA 4 + с#. Но выбор, в основном, зависит от целей Вашего проекта.

Ответ 2



Есть ещё OpenGL суперкнига. Последнее переведённое на русский 3-е издание. Там описывается OpenGL 2.0. Я думаю, что его возможностей вполне хватит. Если же нет, то читай 5-е издание на английском. Там уже есть OpenGL 3.x.

Ответ 3



OpenGl red book - больше справочная OpenGl orange book - шейдеры OpenGl blue book - туториалы OpenGl insights - особенности, которых часто нет в документациях желательно, начиная с 3.2, потому что ранние уже не актуальны.

SSH server на Android

#android #ssh #сервер

                    
Можно настроить ssh сервер на андроиде? Как?    


Ответы

Ответ 1



Можно установить приложение из Android Market: SSHDroid, которое реализует SSH-сервер для Android-телефона. Приложение сделано на основе Dropbear SSH.

Как сделать iframe с динамической высотой, задаваемой внутренним содержимым самого фрейма

#html #css #iframe

                    
Добрый день. Как известно iframe кушает лишь четкие указания height в px, а нужно
что-бы вставляемый iframe растягивал родительский элемент, в зависимости от размера
содержимого самого iframe, т.к. содержимое - динамическое. Кто знает какие решения,
простые или сложные (JS, JQ и т.д.)?    


Ответы

Ответ 1



Скрипт вставлять в тот документ который загружается в iframe, не забудьте также подключить в этот файл jQuery (проверял на 1.6.2) Посмотрите еще вот это - http://host.sonspring.com/iframe/

Ответ 2



Работает, но если содержимое больше высоты монитора, то устанавливается высота которая видна, если бы я открыл этот Iframe в отдельном окне.

Убрать отображение полос прокрутки

#html #css

                    
У меня есть небольшой блок и полосы прокрутки к нему. Надо чтобы полосы прокрутки
работали (колесом крутить если), а сами полосы не были видны. hidden убирает их, но
работоспособность также проходит.
    


Ответы

Ответ 1



Что бы блок прокручивался - а полос не было - это нужно внедрять жску. Есть много плагинов, которые скрывают полосы прокрутки, но сам скол работает. А средствами ксс - не видел такого еще. Вот один из них slimscroll

Ответ 2



в css ::-webkit-scrollbar { visibility: hidden; width: 0px; }

Размещение созданной БД SQLite в проекте под Android

#android #java #sqlite #база_данных

                    
Здравствуйте. Пишу небольшой справочник, в основе которого будет база данных. Файл
БД создан на стороне средствами специального ПО. Данный файл нужно подгрузить в приложение
Android. Каким образом размещать файл, каков путь для доступа к внедряемой БД, какие
методы следует реализовать для обеспечения подключения и дальнейшей работы с данной
БД в приложении?    


Ответы

Ответ 1



Если ещё не читали, то будет полезна статья на Хабре «Правильная работа с БД в Android». Там же есть ссылка на тему прикрепления БД. Сам давно уже использую этот подход. Меня устраивает. Обсуждение тонкостей также производилось в вопросе «Правильная работа с SQLite-базой в Android».

Ответ 2



Базу на флешку. В приложении сделать выбор пути к базе.

Как делают программы с интерфейсом Windows XP SP3, Vista, 7 и т.д.?

#windows #vista #visual_basic

                    
Я очень хотел делать программы с интерфейсом Windows, с трудом нашёл Visual Basic
и каково было моё разочарование, когда я узнал, что там кнопки (и другой интерфейс)
какие-то 2d-шные (как Chemax) и под Windows 98, NT, и другие дряхлые системы. А это
не то, что я хочу! Подскажите, на каком языке (в какой среде) делают приложения с интерфейсом
Windows XP, Vista, 7, и другие современные, в которых интерфейс зависит от темы и кнопки.
Короче, такие как Kaspersky Norton Win Doctor и т.д. и где взять учебники и как это
делать лучше? Пожалуйста, поподробнее.    


Ответы

Ответ 1



Это небось VB6? Помню, было такое дело. Рядом с ЕХЕ-шником кладите файл ИМЯEXE.manifest примерно следующего содержания: Windows Shell ВАЖНО. Все ocx-контролы (и dll)? которые используются для создания интерфейса (при добавлении которых появляются всякие списки, тривью (treeview)) должны быть не ниже версии 6.0. Пояснение: такой ЕХЕшник нельзя собрать на ОС ниже ХР. Или более продвинутый вариант - ставить Visual Studio 2003 и выше. Там это включается опцией в настройках формы и одной командой глобального объекта Application.

Игра нарды на Java

#java #алгоритм #разработка_игр

                    
Здравствуйте! Подскажите, можно ли написать игру нарды в настольном приложение! Подскажите,
как в java создать доску, фишки и камни для игры?
Опишите, пожалуйста, алгоритм игры нарды или дайте ссылку по разработке игры нарды?    


Ответы

Ответ 1



Учи java Swing, тебе этого будет достаточно, что бы сделать интерфейс, правила игры, смотри в другом месте, если делать игру - не примитивной, камни, фишки и тд, надо будет нарисовать или стырить =)

Работа с БД при помощи JPA 2

#jpa #java

                    
Здравствуйте. Помогите, пожалуйста, разобраться, JPA 2.
Вопрос вот в чем: 

Допустим, у меня есть некоторый класс, работающий с БД. Разные объекты его создают,
используют и т.д. Чтобы не было много "мертвых" подключений, их постоянно надо закрывать.
EntityManagerFactory emf = Persistence.createEntityManagerFactory("commonStorage");
EntityManager em = emf.createEntityManager();
// операции
em.close();
emf.close();

Но создание нового EntityManager занимает время. Может, есть что-то, что я упустил?
Может, надо использовать один EntityManagerFactory на все приложение? Или другие варианты.    


Ответы

Ответ 1



Да, EntityManagerFactory тяжеловесный объект и не стоит его создавать при каждом запросе. Лучше использовать стратегию - один EntityManager на один запрос.

Решение нелинейных систем уравнений

#math

                    
Сразу говорю - вопрос сложный.
Есть система уравнений вида.
-w -v + 44 =0
 w -x + y -20.5 =0
 v -y -z -11 = 0
 x + z -12.5 = 0
-0.001716*(w^2) + 0.003065*(v^2) + 0.072168*(y^2) = 0
-0.057172*(x^2) + 0.072168*(y^2) + 0.038655*(z^2) = 0

Приближенные начальные значения есть и достаточно близки.
Неизвестных 5. А уравнений 6. Причем с усложнением системы "разрыв" будет расти.
Степень уравнений не более 2.
Есть ли у кого идеи (может сталкивался) как с таким бороться (аналитический метод,
к сожалению, не подходит)?
Обычно, такое решается методом Ньютона, но он подходит только для квадратных матриц...    


Ответы

Ответ 1



Если приближенные методы подхоят, то можно решить численными методами. Вот несколько ссылок: Решение систем нелинейных уравнений. Численные методы. Учебное пособие.

Ответ 2



Складываем первые четыре уравнения, получаем: 22 = 0. Система несовместна.

Вывод группами в django

#шаблоны #django

                    
Необходимо вывести нечто вроде этого:
Из массива вида ['1','2','3','4','5','6','7','8','9']. Как это лучше всего сделать, учитывая то, что количество элементов в массиве может быть любым (от 1 до бесконечности). Спасибо!


Ответы

Ответ 1



Помогло
{% for item in items %} {% if forloop.counter|divisibleby:"3" %}
{% endif %} {% endfor %}


Как работает функция вершинного шейдера OpenGL gl_ClipDistance?

#opengl

                    
Есть какая-либо информация на этот счёт или простой пример? Мне показалась, эта функция
довольно интересной, но возникли трудности в её реализации.     


Ответы

Ответ 1



gl_ClipDistance - это не функция, а одна из частей input'a или output'a вершинного или геометрического шейдера. Если в соответствующем шейдере задать этот параметр, то можно производить клиппинг произвольных вершин на основании расстояния до соответствующих плоскостей. Пример использования в геометрическом шейдере можно найти здесь. В этом аспекте не очень понятна фраза про трудности с ее реализацией, хотя, я конечно могу допустить, что вы занимаетесь какой-нибудь задачей типа, например, портирования компилятора GLSL на мобильные девайсы. В таком случае имеет смысл глянуть, например, на библиотеку Mesa3d и посмотреть как соответствующие вещи реализованы там, благо opensource.

Выбор книги по C# [закрыт]

#c_sharp #книги

                            
             
                
                    
                        
                            Закрыт. На этот вопрос невозможно дать объективный ответ.
Ответы на него в данный момент не принимаются.
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            Хотите улучшить этот вопрос? Переформулируйте вопрос,
чтобы на него можно было дать ответ, основанный на фактах и цитатах, отредактировав его.
                        
                        Закрыт 4 года назад.
                    
                
        

Недавно появились на полках магазинах новые издания книг по C#. Хотелось обсудить
какая книга лучше всего подходит для человека, который не имел дело с программирование
и хочет начать с свое знакомство с C#. Думаю смысл обсуждения есть потому, что люди
которые хотят заниматься C# и не имею опыта в программирование имеет смысл начинать
изучение с 2010 студии и 4 версии платформы .NET. Вот какие бы книги я бы хотел обсудить

Грин Д., Стиллмен Э. Изучаем C#. 2-е изд. Серия: Head First O'Reilly
Карли Уотсон, Кристиан Нейгел, Якоб Хаммер Педерсен, Джон Д. Рид, Морган Скиннер Visual
C# 2010. Полный курс
C# 4.0: полное руководство. Герберт Шилдт 

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


Ответы

Ответ 1



На stackoverflow.com отчаянно советуют Head First C#.

Ответ 2



Читал 1 и не до конца 3. По формату изложения, больше нравится 1. Мне кажется книга подойдёт не только новичкам, но и людям которые уже разбираются в языке и которые хотят структурировать все знания в голове.

Ответ 3



C# 4.0: полное руководство. Герберт Шилдт По мне так книга в самый раз для новичков, интересное описание, постоянные упражнения. Книга большая, но там можно найти всё что душе угодно, советую! ))))

Ответ 4



Первая книга из списка и есть Head First C# в переводе для себя выбрал сочетание - первой, на английском, и третьей на русском. хед фирст дает упражнения, а у шилдта все структурировано и если что то не понял в первой книге то по шилдту уточняешь

Общие настройки для разных приложений

#android

                    
Добрый день всем.
Как можно сделать общий настройки для разных приложений.
Допустим в первом приложении ставим настройку.
И чтобы другое приложение могло ее считать?    


Ответы

Ответ 1



Существует ряд методов по работе с данными из приложения: Shared Preferences Internal Storage External Storage SQLite Databases Network Connection Из них только External Storage позволяет обращаться к данным из разных приложений. Поэтому можно поступить так: создать приложение, которое будет управлять настройками группы приложений, и обеспечить доступ к этим настройкам для других приложений, сделав его Content Provider'ом.

Ответ 2



А еще настройки можно хранить в облаке.

Как сделать дополнительные кнопки на окне?

#c_sharp #winforms

                    
Как сделать дополнительные кнопки на окне, помимо 3 основных (свернуть, развернуть,
закрыть) на C#?    


Ответы

Ответ 1



Для начала, судя по всему, без использования Win32 не обойтись. (Или третьесторонней библиотеки, к-ая за вас использует Win32). Вот здесь я нашел более менее ответ. Пример оттуда же. (попробовал, правда работает) Далее перевожу вариант, совместимый с Аэро (как наиболее актуальный): Это решение основано на Win32-примере по этой ссылке: http://msdn.microsoft.com/en-us/library/bb688195(VS.85).aspx В принципе, нужно сделать следующее: Расширить клиентскую область окна так, чтобы она покрывала весь Frame. Для этого нужно перехватить WM_NCCALCSIZE-сообщение и вернуть 0. Так не-клиентская область станет нулевого размера, что значит, что клиентская будет покрывать все окно. Расширить Frame до размеров клиентской области, используя DwmExtendFrameIntoClientArea. Это скажет ОС рисовать Frame над клиентской областью. Вышеописанные шаги дают вам окна со стандартным стеклянным оформлением, исключая иконку окна и заголовок. Кнопки свернуть, развернуть и закрыть будут продолжать рисоваться и работать. Что не будет работать, так это перетаскивание и изменение размеров окна, потому что фрейма теперь нет, а клиентская область покрывает все окно. Теперь можно рисовать на окне как обычно. Можно даже поместить контролы в заголовок. Осталось только перехватывать WM_NCHITTEST-сообщения, брать из них информацию о положении курсора мыши и возвращать информацию о том, в какой части окна он находится. Например, если вернуть HT_CAPTION, то окно будет работать так, как будто курсор находится на заголовке, и будет позволять перетаскивать окно и т.д. С этой функцией получится сделать полнофункциональное окно с кастомным фреймом.

Проблема с AlertDialog

#android

                    
case IDD_SEND_SMS:
AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
builder2.setMessage("Отправить смс на номер " + number + "?");
builder2.setPositiveButton("Да",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            sendSMS(number, smsText);
        }
    });
builder2.setNegativeButton("Нет",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
builder2.setCancelable(true);
return builder2.create();

При повторном вызове сообщение остается тем же, что и было при 1-ом. Иначе говоря,
setMessage во 2-ой раз не срабатывает. Почему?    


Ответы

Ответ 1



Если этот код находится в onCreateDialog(), то проблема в том, что диалоги, созданные этим методом "кешируются". Из документации: If you use showDialog(int), the activity will call through to this method the first time, and hang onto it thereafter. Any dialog that is created by this method will automatically be saved and restored for you, including whether it is showing. Используйте метод onPrepareDialog() для того, чтобы изменить сообщение.

Импорт PNG в программу

#cpp

                    
Как импортировать картинку с форматом .png в программу (написанную на C++) и вывести
её? Если можно, то предоставьте пример.    


Ответы

Ответ 1



Один из возможных способов - прочитать эту самую картинку с помощью libpng. Вообще, вопрос очень сильно зависит от средств, используемых для рисования Gui. В случае Qt, wxWidgets и им же подобных, работа с .png и отрисовка проводится средствами самой библиотеки, однако, понятно, что способы сильно отличаются. В случае WinAPI имеет смысл прочитать эту картинку с помощью libpng в некоторый буфер и отрисовать ее из буфера в обработчике WM_PAINT. При использовании C++ Builder-подобной среды все выполняется с помощью класса VCL TImage.

Размер стека во встраиваемых ОС реального времени (FreeRTOS, OpenRtos)

#c #freertos

                    
Пытаюсь использовать FreeRTOS в проекте (проц - avr32). Заметил такую штуку. Если
увеличить размер стека для задачи, прошивка тупо виснет. В дизасме пустой бесконечный
цикл. Если сделать размер стека задачи маленьким, виснет сама задача. Кто знает, как
правильно выбрать размер стека в принципе и какие причины сей проблемы могут быть кроме
размера стека?    


Ответы

Ответ 1



Виснуть может по простой причине - процессор просто не может выделить сколько места под стек. Пусть у Вас всего 32кб памяти, а под стек выделяете 64кб - понятно, что будут пробемы:) С другой стороны, 16кб может быть нормально, но в памяти не только стек размещается... Но обычно стек больше половины доступной оперативки не должен быть. Также, нужно помнить, что эти процессоры очень привередливы. Например, размер стека должен быть кратным 4кб. Иначе виснет. Все это лучше читать в документации на процессор. И ещё одна причина подвисания прошивок, с которой я стыкался. У некоторых процессоров flash для прошивки не монолитный, а составной, например 8+8+16+32кб, то есть, 4 блока разного размера. И если какая то процедура попадает на стык - могут быть проблемы. А если ещё код выполняет близкий переход через границу - так подвисает на ура. Решалось анализом кода и составленим правильно мап файла для распределения процедур по блокам.

С чего начинать для рисования?

#python #3d

                    
Надо создать программу в которой должно отображаться 3 фигуры со стереометрии (Куб,
Пирамида, Сфера). Размеры - любые, условие чтобы они крутились. Кто может помогите
мне кто чем может. Я не прошу выполнять за меня задание. Я бы хотел чтобы могли накидать
наброски или ссылки с примером.  

Доп. информация:
Язык: python sage;
Работал в языках: php, pascal, чуток с++;
Знание языка: Даже не вкурсе как его компилировать и где запускать.
    


Ответы

Ответ 1



Простые геометрические фигуры достаточно просто рисовать и анимировать в VPython (Python + 3D графика). Хорошие 2D и 3D графики рисуются в PyX. Очень хорошие 2D и 3D графики рисуются в matplotlib. Плюс есть еще очень много графических библиотек на любой вкус. Проще всего начать, пожалуй, с какого-нибудь руководства по VPython.

Ответ 2



А использовать 3д-редакторы не вариант ? Просто сейчас много open-source проектов и можно их использовать почти в любой сфере

Вставка HTML через JS

#html #javascript

                    
Доброго всем времени суток! Возник следующий вопрос: в зависимости от результата
проверки некоторого условия в JS нужно выводить на HTML определенный блок из двух.
Видимость не подходит, есть элементы, которые не могут выводиться 2 раза. Как это лучше
сделать?     


Ответы

Ответ 1



Либо подключаем Jquery, что намного удобнее, если нет маниакального стремления строить велосипеды(на что мое мнение, надо построить свою ось для начала, чтобы уже никто не подкопался), либо возможно стандартным js Доступ к элементам DOM. Вариант с Jquery до безумия прост 1.Подключаем библиотеку 2.Присваиваем элементам id к примеру div id="blockN" 3.Меняем их содержимое $("#blockN").html(Вставьте свою разметку сюда); 4.Гуглим "Jquery селекторы"

Ответ 2



document.getElementById(someid).innerHTML = somehtml;

Ответ 3



condition?document.getElementById (id).innerHTML = value; Надеюсь, разберешся :)

Как передать звук с микрофона по сети?

#c_sharp #c #delphi #cpp

                    
Нужно передать звук с микрофона по сети на другой комп и воспроизвести там. Я знаю,
что мне нужна 2 программы. Сервер и Клиент. А еще я знаю, что я дожна использовать
RTP. Я справилась с задачей c помощью FTP.  Думала, что и с этой справлюсь, но что-то
не получается. Прошу помощь. Спасибо всем заранее.    


Ответы

Ответ 1



По хорошему суть такова: берем поток с микрофона, режем на кусочки по 0.1-0.5 сек (смотря насколько вам нужен реалтайм, чем выше частота, тем больше нагрузка). Кодируем сей кусочек в mp3 и шлем по уже созданному сокет-соединению. Там, соотв-но, дешифруем и воспроизводим. Собственно, если вас не сильно заботит траффик, можно решать в лоб(без перекодировки, в PCM MONO). В который раз тут пиарю либу, уж простите) Чего делаем: инициализируемся, определяем девайс микрофона. Выставляем потоку глубину/частоту, чтобы ваше соединение вытянуло (ширина потока будет = (глубинаbps / 8) * 1 канал(моно) * частотадискретизации байт/сек). Далее: открываем соединение с клиентом и раз в 0.1-0.5 сек берем с потока байты и шлем в сокет. С такой же частотой на клиенте считываем данные с сервера и напрямую воспроизводим. Отправку/прием лучше реализовать в отдельном потоке. В архиве для дельфей (скорее всего не только, но не проверял) куча примеров, которые можно расковырять. В т.ч. был пример с инет-радио. В том же архиве хелп по всем функциям, наложить их на алгоритм выше не должно быть проблемой.

Параметрическое нахождение ближайшей точки в заданном направлении

#алгоритм #php #mysql

                    
Есть массив точек со случайными координатами.
Выбираем любую из них.
Задача: найти ближайшую к ней точку в заданном направлении.
Например, если речь идет о плоской карте, и надо найти ближайшую точку на востоке,
мы фильтруем угол между северовостоком и юговостоком и ищем точку в нем, тупо сравнивая
расстояния. Для трехмерного пространства все еще хуже. Особенно, если попытаться ввести
систему ранжирования: если есть две точки, одна из них точно на восток, но на X дальше,
а другая - на восток-северовосток под углом a, но чуть ближе, то будет выбрана та,
для которой соблюдается определенное отношение X и a.

Вопрос: 


как поступают умные люди в данной ситуации?

это задача для базы(MYSQL) или PHP?


Код писать не надо: как-нибудь справлюсь. Нужен алгоритм или волшебный пендель.    


Ответы

Ответ 1



SQL: select TOP 1 id from ( select id, my_range_fn( dir_x, dir_y, dir_z, x0, y0, z0, x, y, z ) as range from Points p ) where range < 0 order by range desc Пример ранжирующей функции ( JS ): //2D карта на JS //Север - 2, Запад - 4, Юг - 6, Восток - 0 //Рассматриваем попадание в угол в +- 45 градусов от направления function my_range_fn( dir, x0, y0, x, y ){ var dy = y - y0, dx = x - x0, rast = Math.sqrt( dx * dx + dy * dy ), my_dir = Math.PI * ( ( dy > 0 ) ? 1 : 0 ) - Math.acos( dx / rast ), my_dir = ( my_dir < 0 ) ? Math.PI * 2 + my_dir : my_dir, dir = Math.PI * dir / 4; delta = Math.abs( my_dir - dir ); return ( ( delta < Math.PI/4 ) ? -1 : 1 ) * rast - 2 *delta; } Используется коэф. 2 на разность желаемого направления и полученного Примерно означает что при (x0, y0) = (0, 0) и направлении Сервер, выберет (0,5) вместо (2,4)

Ответ 2



Можно и с помощью MySQL. Если рассматривать вариант плоской сетки координат с точкой отсчета в центре, то северо-восток - это верхний правый квадрат. То-есть ограничения в запросе по х > 0 и у < 0 с учетом точки отсчета. Расчет расстояния по теореме Пифагора. Убывающая сортировка по расстоянию. Лимит 1 на вывод. На выходе ближайшая точка в заданном квадрате.

Ответ 3



Для начала выберем систему координат с центром в первой точке Особенность задачи - в наличии ограничений на угол (|fi|<45), что наталкивает на мысли о полярной системе координат и уравнениях вида r=R(cos(fi)-cos(pi/4)). При этом в качестве критерия оптимальности напрашивается параметр уравнения R = r/(cos(fi)-sqrt(2)/2) = r^2/(x-r*sqrt(2)/2) с размерностью расстояния. И тогда останется главное - правильно учесть ограничения.

Синтаксический анализатор (построение грамматики) ?

#синтаксический_анализ #парсер

                    
Нужно построить синтаксический анализатор. В частности для языка создать  контекстно-зависимую
грамматику( LL) Везде встречаются примеры только для чисел и знаков, у меня присутствуют
только 4 буквы(A, B, C, D)  и для них надо построить грамматику .
Есть ли примеры построения грамматики ?    


Ответы

Ответ 1



Тут не плохой пример. Грамматика это просто набор правил. Таблица синтаксического анализа лишь отражает порядок применения этих правил.

Двумерный String массив

#java

                    
Вопрос заключается в следующем. У меня есть 2 метода. В каждом из методов, в цикле,
переменным (notInitialised и initialised) присваиваются string значения. Необходимо,
полученные эти значения, сохранить в двумерный массив - String [notInitialised][initialised].
Как правильно его реализовать?
public void notInitialised(){
...
    for (int i = 0; i < 5; i++) {
        ...
        notInitialised = matcherNotInitialised.group();
    }
    ...
}

public void initialised(){
...
    for (int i = 0; i < 5; i++) {
        ...
        initialised = matcherInitialised.group();
    }
    ...
}
    


Ответы

Ответ 1



Не совсем понятно куда сохранять. Можно так: String[][] values = new String[2][5]; int initializedIndex = 0; int nonInitializedIndex = 0; public void notInitialised(){ ... for (int i = 0; i < 5; i++) { ... notInitialised = matcherNotInitialised.group(); values[0][nonInitializedIndex++] = nonInitialized; } ... } public void initialised(){ ... for (int i = 0; i < 5; i++) { ... initialised = matcherInitialised.group(); values[1][initializedIndex++] = initialized; } ... }

Преобразование шрифта в массив

#c #шрифты #embedded

                    
Посоветуйте, пожалуйста, утилиты (доступные для скачивания) для преобразования шрифта
в заголовочный файл *.h с массивом, содержащим растр для всех нужных символов для использования
во встраиваемых системах.
Типа такого: Freescale Embedded GUI Converter Utility 2.0 (судя по всему, его так
просто не скачать).    


Ответы

Ответ 1



Нашел ответ на stackoverflow. Предлагается использовать утилиту convert из imagemagick. Например команда: convert -resize 7x13\! -font /Library/Fonts/Arial.ttf -pointsize 10 label:A A.xbm генерирует побитовое представление буквы A: #define A_width 7 #define A_height 13 static char A_bits[] = { 0x00, 0x00, 0x04, 0x0C, 0x0A, 0x0A, 0x1E, 0x1F, 0x11, 0x11, 0x00, 0x00, 0x00, };

Таблица с заголовками столбцов

#android #java

                    
Как в Android создать таблицу с "шапкой"? Добавил в приложение таблицу с помощью
TableLayout, но такой возможности не нашел.    


Ответы

Ответ 1



Можно так: Будет отдельная таблица под шапку.

Ответ 2



А что мешает выделить особенным образом первую строку таблицы? Например шрифт сделать жирный, поставить рамку.

Достать дату и время из строки с определённым префиксом

#php #регулярные_выражения

                    
есть код страницы в ней есть строчка You have access until: 2011-11-27 18:28:45
мне нужно достать дату и время. используя preg_match    


Ответы

Ответ 1



Ну, и в чем сложности ? берем данную строку, You have access until: 2011-11-27 18:28:45 You have access until: - эта часть строки скорее всего меняться не будет, так что скорее всего хватит обычного echo substr("You have access until: 2011-11-27 18:28:45", strlen("You have access until: ")); но если вам уж так хочется применить preg_match - то: нам нужно сделать маску для даты и времени в заданном формате. Итак: \d - цифра {x} - количество символов которые подходят под маску заданую предыдущими символами. Например: \d{4} - это маска задаёт 4 любых числа. итого у нас выходит чтото типа: if (preg_match("~You have access until: (\d{4}-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2})~", "You have access until: 2011-11-27 18:28:45", $m)) { print_r($m); } Но на самом деле нам бы хватило \d+ в даном случае.

Наследование xml комментариев в c#

#c_sharp

                    
Есть ли в c# возможность наследовать xml комментарии? Например, если я определил
поле/метод в базовом классе и использую в потомке, его смысл не меняется - однако приходится
вводить заново комментарий - иначе он не будет виден в IntelliSense.    


Ответы

Ответ 1



В случае интерфейсов Visual Studio 2010 показывает xml-комментарий из него, если у реализаций интерфейса этот комментарий отсутствует. Предполагаю, что тоже самое должно происходить и в случае некоторого базового класса. А вообще, для автоматизации копирования xml-комментариев и прочих вещей хорошо подходит Ghostdoc.

1С-Битрикс: сайт на поддомене

#домен #php #битрикс

                    
Доброго дня. Как всегда, есть проблема.
У сайта site.ru есть поддомен lk.site.ru. Физически они раположены в папках /www/site.ru/
и /www/lk.site.ru/. На site.ru стоит старенький 1С-Битрикс: Управление сайтом 9.0.2,
а на lk.site.ru нет вообще ничего. Каким образом можно заставить оба сайта работать
c одной админкой?
Заранее спасибо.
Добавлено
Воспользовался указаниями http://dev.1c-bitrix.ru/community/blogs/howto/336.php:
создал симлинки, скопировал access и index, прописал в админке хосты и папки, однако
CMainPage::GetSiteByHost(); на lk.site.ru показывает id сайта site.ru. Что, в общем-то,
логично: ибо поддомен. Как побороть эту проблему?    


Ответы

Ответ 1



Вот тут - многосайтовость на пальцах - про это подробно расписано. Только я не совсем понял, будет ли это работать с поддоменами. Посмотрите, может поможет.

Exe-файл в java

#java

                    
Доброго всем времени суток!
Я наконец дописал програму на java, теперь встает вопрос, как сделать exe-файл? И
можно ли запускать ее с телефона (можно ли это сделать вообще, если он поддерживает
только jar или jad)?
Подскажите, кто знает.    


Ответы

Ответ 1



Создайте *.bat файл для запуска вашего java-приложения под windows. Эта статья вам поможет http://www.devdaily.com/blog/post/java/dos-batch-files-compile-run-java-program-create-jar-file На этот батник можно навесить ярлык, и ярлык разместить уже где угодно - на рабочем столе, в меню кнопке пуск и т.д. С телефоном все сложнее. Если писали под симбиан нокию, то для этого придется портировать вашу программу java под Java ME. Android портировать под андроид и его Android SDK. Если все было написано хорошо - особых проблем вызвать не должно, т.к. основые проблемы и расхождения в юзер интерфейсе (Swing и AWT скорее всего не прокатят). Ява программа чаще всего - это запускаемый jar файл. Который запускается уже где угодно. Но у каждой платформы есть свои собственные ограничения

Ответ 2



А зачем делать exe? На то она и java. С другой стороны, сделаете Вы exe, и что потом с ним делать? под Linux уже не запустится так просто. Запускать с телефона можно, но нужно компилировать с правильным SDK для конкретного телефона/модели.

Ответ 3



Для desktop-приложений существуют специальный программные средства, которые позволяют сделать. Примеры: Eclipse RCP NativeJ

Как правильно записать в файл данные из EditText Android приложения на SD-карту

#android

                    
Приветствую. Как правильно записать в файл "test.txt" данные из EditText Android
приложения на SD-карту? В моем случае вываливается ошибка о прекращении процесса программы.
public void mNoteSaveClick(View v) {
    saveFile(FILEPATH + nnTitleText.getText().toString() + FILEEXT);
}

private void saveFile(String FileName) {
    boolean yoba;
    if (yoba = Environment.getExternalStorageState().equals(
            Environment.MEDIA_MOUNTED)) {
        try {
            OutputStream outStream = openFileOutput(FileName, 0);
            OutputStreamWriter sw = new OutputStreamWriter(outStream);
            sw.write(nnTitleText.getText().toString());
            sw.write(nnNoteText.getText().toString());
            sw.close();
        } catch (Throwable t) {
            Toast.makeText(getApplicationContext(),
                    "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
        }
        Toast.makeText(getApplicationContext(), "Exception111",
                Toast.LENGTH_LONG).show();
    } else {
        Toast.makeText(getApplicationContext(), "Exception",
                Toast.LENGTH_LONG).show();
    }
}
    


Ответы

Ответ 1



Первым делом Вам надо убедиться, что в манифесте приложения выставлены требуемые права на запись на SD-карту, а именно WRITE_EXTERNAL_STORAGE ... После этого стандартная запись должна работать OutputStream os = new FileOutputStream ("/sdcard/filename"); try { byte[] buffer = new byte[256]; os.write(buffer, 0, buffer.length); } finally { os.close(); }

Web-камера в Java

#web_camera #java

                    
Ребята, есть вопрос. Как научить java работать с веб-камерой? что нужно для такой
задачки, как вывод картинки с нее на обычный фрейм? и можно ли потом это изображение
с помощью сокета передавать куда-нибудь(например на другой компьютер по локалке)?    


Ответы

Ответ 1



Есть такая библиотека - JMyron Пример использования: myron = new JMyron(); myron.start(imgw, imgh); myron.update(); int[] img = myron.image();

Kohana 3.2 модуль auth orm

#php #kohana

                    
Не так работает модуль. При авторизации со значением $remember = TRUE, должен отправлять
куки на 2 недели с токеном, а токен записывать в базу. А он отправляет куки до закрытия
браузера(не чего не записывая в бд) и при Auth::instance()->logout($destroy = TRUE)
не удаляет куки, хотя должен.
Вот, что в контроллере
 $login = Arr::get($_POST, 'login', '');
        $password = Arr::get($_POST, 'password', '');
        $remember = $_POST['remember'];

        $auth->login($login,$password, $remember);

Вот конфиг auth.php
return array(

'driver'       => 'ORM',
'hash_method'  => 'sha256',
'hash_key'     => '2, 4, 6, 7, 9, 15, 20, 23, 25, 30',
'lifetime'     => 1209600,
'session_type' => Session::$default,
'session_key'  => 'auth_user',
    


Ответы

Ответ 1



Решил проблему, только таким способом: $auth->login($login,$password, TRUE); По другому не как не получается, при приеме $remember

Ответ 2



$status = Auth::instance()->login($data['username'], $data['password'], isset($_POST['remember']) ? true: false); Если в $_POST['remember'] передается значение из чекбокса.

Ответ 3



Здравствуйте. При проверке вардампом выдаёт 1 или NULL. Поэтому поставил условие перед логином. $data = Arr::extract($_POST, array('username', 'password', 'remember')); //var_dump($data['remember']); //выдаёт 1 или NULL //die(); // Поэтому поставил условие перед логином. if($data['remember'] == 1) { $flag = TRUE; } else { $flag = FALSE; } $status = Auth::instance()->login($data['username'], $data['password'], $flag);

Помогите найти аналог globalStorage для Chrome

#google_chrome #chrome_extension

                    
Пишу простое расширение для Chrome, которое уведомляло бы о новых постах на сайте. 
Решил хранить в локальном хранилище номер последнего поста, который бы обновлялся
при заходе на сайт, но столкнулся с проблемой: localStorage уникален для каждого домена
и расширение не имеет доступа к данным, которые я кладу в localStorage при заходе на сайт.
Хотелось бы найти js-плагин, который бы реализовывал функционал globalStorage в Chrome.    


Ответы

Ответ 1



В качестве идеи, можно попробовать обойти ограничение на домены, создав расширение, которое будет включать фоновую страницу, которая будет запущена вообще всегда, независимо от того, что открыто в обозревателе: пустая страница или страница какого-либо сайта. Эта фоновая страница будет обращаться к localStorage, а другие страницы расширения могут обращаться к ней.

Процент покрытия кода юнит-тестами

#c_sharp #net #тестирование #юнит_тесты

                    
Есть ли какой нибудь способ точно оценить процент кода, покрытого юнит-тестами (nunit)?    


Ответы

Ответ 1



Для тестов в Visual Studio есть встроенные средства, позволяющие считать покрытие. Нужно Включить расчет покрытия: Test > Edit Test Run Configurations > Your Test Configuration, далее Code Coverage, и выбрать сборку для тестирования. Прогнать тесты. Правый клик по тестам, и вызов Code Coverage Results. В итоге вы увидите статистику по процентам Not Covered Blocks Not Covered Blocks % Covered Blocks Covered Blocks % Не проверял, как это соотносится с nUnit. Еще есть сторонние стредства, например, nCover, partCover, openCover.

Как узнать оперативную память занятую процессом

#linux

                    
Доброго времени суток!
Вопрос такой, надо узнать оперативую память занятую процессом по PID. Желательно
командой, и желательно, что бы результат выводился только в виде занятой памяти без
посторонней информации.    


Ответы

Ответ 1



В принципе у top есть пара полезных опций, например top -b -n 1 -p 1184 выведет один раз информацию о процессе 1184 и завершится. Но все равно он читает данные из /proc, поэтому лучше и удобнее смотреть там

Ответ 2



Один из вариантов частичного ответа #include #include using namespace std; int main() { ifstream ifs("/proc/self/maps", ifstream::in); while (ifs.good()) { string s; getline(ifs, s); cout << s << endl; } } man 5 proc

Ответ 3



Есть очень продвинутый htop, я бы использовал его. Еще полезные найденные команды: ps axo %mem,comm,pid,euser | sort -nr | head -n 10 ps auxf | sort -nr -k 4 | head -10

Список алгоритмов на C#

#c_sharp #алгоритм

                    
Недавно набрел на сайт "Список алгоритмов и структур данных на Java" например вот
описан алгоритм имитации отжига . В общем показалось это очень удобно, может кто видел
такое же для C#? Сложно ли будет на крайний случай сконвертировать?    


Ответы

Ответ 1



Для таких задач - абсолютно не сложно. JLCA 80% работы сделает, визуализационную часть придётся ручками доработать. Как пример - Mp3Sharp, декодер mp3, он конвертирован из явы.

java.lang.InstantiationException

#java #исключения

                    
Здравствуйте!
В данный момент пишу такое учебное задание:
На нашем компьютере есть файл (путь C:\User), в котором храниться такая информация:
int id 1
String name Vasya
int age 25
long salary 2500
Цель, написать такой вот метод,
public Object load (Class cl, int id), который бы сканировал нужный нам файл User,
и возвращал конкретный объект с указанным в параметрах id.

Написал такой код:
public class Main {
public static void main(String[] args) {

    ObjectMapper om = new ObjectMapper();

    try{
    System.out.println((om.load(User.class,1)).toString());
    } catch (Exception e){
        e.printStackTrace();
    }
}

}
public class User {
private int id;
private String name;
private int age;
private long salary;

public User(String name, int age, long salary) {
    this.id=0;
    this.name = name;
    this.age = age;
    this.salary = salary;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public long getSalary() {
    return salary;
}

public void setSalary(long salary) {
    this.salary = salary;
}

@Override
public String toString() {
    return "User{" +
            "id=" + id +
            ", name='" + name + '\'' +
            ", age=" + age +
            ", salary=" + salary +
            '}';
}

}
public class ObjectMapper {

public Object load(Class cl, int id) throws IllegalAccessException, InstantiationException,
IOException, NoSuchMethodException, InvocationTargetException {
    ArrayList lines = new ArrayList();   //Сроки файла
    Object obj = cl.newInstance(); //Создаем пустой объект класса User
    Field[] fields = cl.getDeclaredFields(); //Считываем поля

    Scanner sc = new Scanner(new File("C:\\" + cl.getSimpleName())); //Скан. файл
    String line;
    String[] setterNames = new String[fields.length];  //Создаем массив названий
"методов-сеттеров"
    String[] fieldParameters = new String[3]; //Массив слов, которые нах. в одной
строке (мы точно знаем, что слов в каждой строке 3: тип поля - имя поля - значение поля)
    String[] fieldValue = new String[fields.length]; //Массив значений каждого поля
(например, [0]1,[1]Vasya,[2]25,[3]2500)
    String[] fieldType = new String[fields.length];  //Массив типов каждого поля
(например, [0]"int",[1]"String",[2]"int",[3]"long")

    //Построчно сканируем содержимое файла и заносим в наш ArrayList
    while (sc.hasNextLine()) {
        line = sc.nextLine();
        lines.add(line);
    }

    for (int i = 0; i < lines.size(); i++) {    // Считываем каждую строку ArrayList-a и
        String idLine =  "int id " + id;
        if (lines.get(i).equals(idLine)); {  // сравниваем строки из ArrayList-a
со строкой, например "int id 1"
            int temp;
            for (temp = i; temp < i + fields.length; temp++) {
                fieldParameters = lines.get(temp).split(" "); // Дробим строку на 3 слова
                String methName = "set" + fieldParameters[1].toUpperCase().charAt(0)
+ fieldParameters[1].substring(1); // Создаем имя метода (например, setId)
                setterNames[temp - i] = methName; // Заносим имя метода в массив
                fieldType[temp - i] = fieldParameters[0]; // Заносим тип поля в массив
                fieldValue[temp - i] = fieldParameters[2];  // Заносим значение поля
в массив
            }
        }
    }

    //Заполняем наш, пока еще пустой Object obj значениями
    for (int i = 0; i < fields.length; i++) {
        // Значение нужно записать в соотв. ему типе, если поле "int", значит в поле
заносим значение типа int
        if (fieldType[i].equals("int")) {
            cl.getDeclaredMethod(setterNames[i]).invoke(obj, Integer.parseInt(fieldValue[i]));
        }
        if (fieldType[i].equals("long")) {
            cl.getDeclaredMethod(setterNames[i]).invoke(obj, Long.parseLong(fieldValue[i]));
        }
        if (fieldType[i].equals("String")) {
            cl.getDeclaredMethod(setterNames[i]).invoke(obj, fieldValue[i]);
        }
    }
    return obj;  // Возвращаем заполненный объект
}
}

К сожалению данный метод не работает, пока не могу понять почему.
Вылетает такая ошибка:
java.lang.InstantiationException: User
at java.lang.Class.newInstance0(Class.java:357)
at java.lang.Class.newInstance(Class.java:325)
at ObjectMapper.load(ObjectMapper.java:13)
    .......

Кто-то может объяснить, что делаю не так, и как надо сделать так, чтобы заработало ?    


Ответы

Ответ 1



Object obj = cl.newInstance(); //Создаем пустой объект класса User это значит что ожидается конструктор по умолчанию, которого у вас нет. Заведите конструктор класса User без параметров.

Оптимизация многостраничных элементов

#aspnet

                    
На странице .aspx есть элемент Wizard. Каждая из страниц, помещенных в него оформлена
в виде пользовательского элемента .ascx и этих страниц много. При отладке заметил,
что при загрузке самого wizard, вместе с ним загружаются все его страницы, в том числе
невидимые.
Нельзя ли загружать только видимую страницу?
Может есть по-лучше способы реализации многостраничных элементов?
Что быстрее работает, меньше ресурсов требует MultiView или Wizard?    


Ответы

Ответ 1



Особой разницы между двумя этими контролами фактически нет. Wizard более кастомизируемый контрол, позволяющий отобразить прогрессбар. В то время, как MultiView требует его самостоятельной разработки. Относительно вашего вопроса о произовдительности. Оба эти конторла во время отработки цикла страницы динамически подгружают все свои дочерние элементы. Таким образом во время дебага вы видите все дочерние элементы и, соответственно, все ваши UserControl'ы так же проходят полный цикл загрузки (Init, Load и т.д.). Однако при возвращении страницы сервером клиенту (браузеру), в html-разметке будет срендерен только один из шагов вашего Wizard. Если постоянная загрузка ваших контролов значительно влиятет на производительность, то разумнее их добавлять на страницу динамически, а не статически ложить в Wizard или MultiView, а после фактически их прятать.

Проблема с JQuery

#jquery #jquery_ui

                    
Пользуюсь библиотекой jqery-ui, и при разработке появилась проблема того, что на
один draggable-элемент могут реагировать сразу 2 droppable-элемента. Мне нужно чтобы
мог реагировать только один. При этом у draggable-элемента задан tolerance: 'touch'.
Схематично проблему я попытался изобразить на картинке:

    


Ответы

Ответ 1



В общем, ждать ответ на свой комментарий у меня нет сегодня времени, поэтому я наугад смодулировал ситуацию. Посмотрите рабочий пример и если поможет, то плиззз )) Draggable
  • Droppable
  • Droppable
  • Droppable
  • Droppable
  • Droppable
- #drop_list { width: 145px; } #drop_list li, #drag_el { padding: 15px 35px; border: 1px solid #900; margin: 2px; } #drag_el { float: right; background: #FF0; } .red { background: #F00; color: #FFF; } .green { background: #0F0; color: #FFF; } - $('#drag_el').draggable({cursor: 'move'}); $('#drop_list li').droppable({ hoverClass: 'green', drop: function() { $(this).addClass('red'); $('#drop_list li').not(this).removeClass('red'); } });

Как правильно сохранить данные в бд

#python #ооп #django

                    
Привет всем, я не понимаю как правильно сделать запись в бд, неправильно не хочу
писать и хочется разобраться. 
Есть пасрер который возвращает список с данными определенного типа, вот эти данные
нужно сохранить, но кто должен сохранять эти данные? Модель? Парсер? или другой объект
специально предназначенный для этого? Прощу написать небольшой пример     


Ответы

Ответ 1



Если вопрос концептуальный, то есть понятно как написать код, но непонятно куда его положить, то я бы посоветовал не прикручивать к парсеру функционал сохранения данных. Можно это сохранение сделать во вьюхе, а совсем хорошо написать отдельный модуль с классом-контроллером, который бы получал данные для сохранения, дальше итерировался по ним и создавал/сохранял модели, сформированные из этих данных (ну там MyModel.objects.create(arg1=arg1, arg2=arg2) и т.д.) В этом случае во вьюхе можно получить данные из парсера и передать их экземпляру контроллера, который их и сохранит. Вся логика по обработке данных будет располагаться в объекте контроллера, что удобно и красиво будет. upd Заведите модуль в директории с приложением, назовем его controllers.py # controllers.py class LessonController(object): def __init__(self, data): super(LessonController, self).__init__() self.data = data def save_parsed_data(self): for item in self.data: Lesson.objects.create( subject=item.subject, teacher=item.teacher, ... ) # views.py from controllers import LessonController def my_view(request): x = Parser("D:/rsp.xls") schedule = x.parse() lesson_ctl = LessonController(schedule) lesson_ctl.save_parsed_data Ну вот что-то в этом духе может вам подойдет.

Ответ 2



Привет. Смутно понятно как-то, но если это то, что я понял, сделайте во вьюшке так, например: from .models import Имятвоеймодели def some_function(request): че-нибудь = Имятвоеймодели() че-нибудь.полемодели = какие-тоданныеотпарсера че-нибудь.save() А вообще подробнее опишите свой парсер, дайте пример кода.

Ответ 3



А почему бы не импортировать sql драйвер и уже от этого плясать, данные записать в переменные и их передать в базу? import sqlite3 например.

Динамическая вставка видео по ссылке

#php #youtube

                    
Хочу реализовать такую функцию на сайте: пользователь вставляет в поле ссылку на
YouTube-видео и отправляет форму. Необходимо из ссылки получить код видео и вставить
на сайт. Частенько вижу такую функцию на разных сайтах.

Если есть предложения, ссылки и т.д. — был бы признателен. Спасибо.
    


Ответы

Ответ 1



Видео YouTube характеризуется 11-значным цифробуквенным кодом (xxxxxxxxxxx). Поэтому нужно следующее. Получить код (или ссылку с кодом, а потом вырезать код из ссылки регулярным выражением) Вставить на страницу объект, содержащий ссылку на код

Инжект в чужой процесс системы Windows

#winapi #windows

                    
Здравствуйте!
Какой самый безопасный способ инжекта своего кода в процесс другого приложения?
Например, комбинации:

1) OpenProcess -> VirtualAllocEx -> SuspendThread -> GetThreadContext -> SetThreadContext
-> ResumeThread.

и

2) OpenProcess -> VirtualAllocEx -> WriteProcessMemoey -> CreateRemoteThread.

Палятся всеми современными антивирусами, вследствие чего, программа попадет в карантин,
так как её антивирь посчитает за вирус. Какие у вас есть предложения по этому поводу?
Спасибо!    


Ответы

Ответ 1



Все документированные способы инжектов, конечно же, известны антивирусам и палятся ими, универсального способа НЕдокументироавнного инжекта, подходящего для всех аверов, попросту нет! Кто-то повышает права сплоитом и подгружает свой драйвер, кто-то юзает малоизвестные фнукции OLE.

Рекурсия и ее проблемы

#рекурсия #алгоритм

                    
К каким проблемам может привести использование рекурсии и как их избежать?    


Ответы

Ответ 1



Оверхед на вызовы. Немного время, а главное -- стек. При большой глубине рекурсии быстро расходуется. Метод борьбы -- использование хвостовой рекурсии, которую нормальные компиляторы трансформируют в итерации. Добавлено. На тему "заменить рекурсию стеком". Рекурсивная функция вычисления факториала. fact.c++ int fact0(int k, int n) { if (n > 1) return fact0(k*n, n-1); else return k; } fact0.s .file "fact0.c++" .text .p2align 4,,15 .globl _Z5fact0ii .type _Z5fact0ii, @function _Z5fact0ii: .LFB0: .cfi_startproc .cfi_personality 0x0,__gxx_personality_v0 pushl %ebp .cfi_def_cfa_offset 8 movl %esp, %ebp .cfi_offset 5, -8 .cfi_def_cfa_register 5 movl 12(%ebp), %edx movl 8(%ebp), %eax cmpl $1, %edx jg .L5 jmp .L2 .p2align 4,,7 .p2align 3 .L7: movl %ecx, %edx .L5: leal -1(%edx), %ecx imull %edx, %eax cmpl $1, %ecx jne .L7 .L2: popl %ebp .p2align 4,,2 ret .cfi_endproc .LFE0: .size _Z5fact0ii, .-_Z5fact0ii .ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3" .section .note.GNU-stack,"",@progbits Что тут заменять и на что?

Ответ 2



Слишком глубокую рекурсию всегда можно заменить используя стэк.

Жесты перелистывания

#gestures #android

                    
Есть массив с ссылками на изображения.
Есть ImageView.
Можем ли мы как-либо получить обработать жесть перелистывания влево и вправо и далее
менять изображение на нужное из массива? Интересует именно реализация жеста перелистывания.    


Ответы

Ответ 1



Можем, используя метод onFling: public class MyActivity extends Activity { private void onCreate() { final ImageView iv = (ImageView) findViewById(R.id.image_view); iv.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(final View v, final MotionEvent e) { gd.onTouchEvent(e); return true; } }); } private final GestureDetector gd = new GestureDetector(new GestureListener()); private static final int DISTANCE = 100; private static final int VELOCITY = 200; private class GestureListener extends SimpleOnGestureListener { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if(e1.getX() - e2.getX() > DISTANCE && Math.abs(velocityX) > VELOCITY) { // Справа налево return false; } else if (e2.getX() - e1.getX() > DISTANCE && Math.abs(velocityX) > VELOCITY) { // Слева направо return false; } return false; } } }

Ответ 2



Галерея не подходит?

Дополнительное tty устройство

#qt #cpp #linux

                    
Есть задание надо: создать дополнительное tty устройство, что бы при запуске приложение
оно появлялось в системе и к нему подключалась другая программа.
Подскажите пожалуйста, как это реализовать программно.    


Ответы

Ответ 1



Спасибо всем, более правильный ответ на мой вопрос. -pseudo-terminal Как создать и работать с ним вот

Ответ 2



mknod, но аргументы надо где-то в описаниях системы искать. ls -l /dev говорит, что их много и major у всех 4. Похоже (по времени), что они создаются при загрузке ОС. Я, откровенно говоря, не понимаю с чем они на моей виртуалке связаны. Почитайте man 2 mknod, man 4 ttyS, man 4 tty и SEE ALSO в них. Может что-то полезное найдете.

Парсинг выдачи яндекса

#php

                    
У меня имеется некоторое количество сайтов, за которыми постоянно нужно следить.
(Кол-во проиндексированных страниц и ТИЦ).
Пытался написать с помощью CURL - Яндекс говорит, что запросы автоматические, естественно.
Какие у вас есть идеи реализации скрипта?
Заранее благодарен.    


Ответы

Ответ 1



Есть готовое решение, но показать смогу только в понедельник. Есть алгоритм: Сокетом(ну или cURL-ом) стучимся в Яндекс - он дает 301 на капчу Получаем капчу, показываем юзверю Юзверь заполняет - данные капчи уходят в Яндекс (с ай-пи проверяющего скрипта) Тут надо поймать куки, передаваемые Яшей и записать их (в файл либо в БД) Обращаемся к поиску с записанными куки парсим ответ Если яндекс снова дал капчу - повторить. ... PROFIT! Еще можно быть честным ботом и парсить xml выдачу. Но она не хило отличается от реальной. Это про позиции и количество страниц в индексе. Про ТИЦ не вспомню сейчас. Модифицировал существующий код. UPD: Совсем забыл. Вот метод для проверки ТиЦ: public function tic($url) { $content = file_get_contents('http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://'. $url); preg_match('##', $content, $matches ); $parse = intval($matches[1]); if (isset($parse)){ $this->response['html'] = $parse; } } Вырвал с мясом. Если необходимо - поясню, но тут вроде бы и так все понятно. Вообще могу подогнать исходники класса-проверялки. Проверяет: Яндекс ТИЦ: Google PR: Страницы в индексе Яндекс Страницы в индексе Google Страницы в индексе Yahoo Ссылки на сайт в Яндекс Ссылки на сайт в Яндекс.Блоги Ссылки на сайт в Google Ссылки на сайт в Yahoo Яндекс каталог mail.ru каталог dmoz каталог Rambler каталог Aport каталог Рамблер счетчик на сайте Mail.ru счетчик на сайте spylog счетчик на сайте hotlog счетчик на сайте liveinternet счетчик на сайте Яндекс Метрика счетчик на сайте google analytics счетчик на сайте Но индексы Яндекса - из XML выдачи.