Страницы

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

среда, 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 - количество диапазонов после слияния).