LINUX.ORG.RU

Сообщения JANB

 

ldd показывает много (65) зависимостей даже в статически-собранном Qt-приложении

Форум — Development

Я сконфигурировал и собрал Qt 5.15 статически

mkdir ~/data
cd ~/data
wget https://download.qt.io/archive/qt/5.15/5.15.5/single/qt-everywhere-opensource-src-5.15.5.tar.xz
tar -xf qt-everywhere-opensource-src-5.15.5.tar.xz -C qt-5.15-v1
cd qt-5.15-v1/qt-everywhere-src-5.15.5/

./configure -static -prefix /opt/qt-5.15-v1-static -confirm-license -opensource -nomake examples -nomake tests -nomake tools -skip qtwebengine

Вот результат команды configure https://pastebin.com/7EeqfH0N

Установил Qt, успешно в каталог /opt/qt-5.15-v1-static

make
sudo make install

Потом собрал Hello-world проект без QML с одним MainWindow. Вот его файл проекта:

QT += core gui widgets
CONFIG += c++11
SOURCES += main.cpp mainwindow.cpp
HEADERS += mainwindow.h
cd ~/data/tinytest/
export PATH=/opt/qt-5.15-v1-static/bin:$PATH
qmake tinytest.pro -config release
make

Вот полный вывод сборки: https://pastebin.com/rxvqu7Uj

Замечание: почему-то в строке линковки НЕТ опции -static, хотя в configure она передавалась

После сборки бинарник содержит очень много зависимостей:

user@host:~/data/tinytest$ ldd tinytest
        linux-vdso.so.1 (0x00007ffc715dd000)
        libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007f21798e7000)
        libxcb-icccm.so.4 => /usr/lib/x86_64-linux-gnu/libxcb-icccm.so.4 (0x00007f21796e2000)
        libxcb-image.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-image.so.0 (0x00007f21794dd000)
        libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f21792da000)
        libxcb-keysyms.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-keysyms.so.1 (0x00007f21790d7000)
        libxcb-randr.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-randr.so.0 (0x00007f2178ec7000)
        libxcb-render-util.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render-util.so.0 (0x00007f2178cc3000)
        libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f2178ab6000)
        libxcb-shape.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shape.so.0 (0x00007f21788b2000)
        libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f21786ab000)
        libxcb-xfixes.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007f21784a3000)
        libxcb-xinerama.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xinerama.so.0 (0x00007f21782a0000)
        libxcb-xkb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-xkb.so.1 (0x00007f2178084000)
        libxcb-xinput.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xinput.so.0 (0x000
... 69 библиотек

Вот полный вывод https://pastebin.com/iMPJZkFk

Я использовал официальное руководство https://doc.qt.io/qt-5/linux-deployment.html

Я знаю что эти 4 библиотеки нельзя собрать статически: linux-vdso.so libc.so libpthread.so ld-linux-x86-64.so

Вопрос: почему остальные 65, почему не собрались? Не могу найти упоминания об этом ни в одном руководстве/мануале/статье

 , ,

JANB
()

Связь с одним из серверов через вторичный ip-адрес

Форум — Admin

Основной адрес моего сервера XX.XX.XX.XX (сетевой интерфейс ens3) и я не хочу его «светить» когда захожу на один из сайтов.

Для этого я купил адрес YY.YY.YY.YY и он подключен к моему сетевому интерфейсу как ens3:0

ubuntu@server$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether ----------------- brd ff:ff:ff:ff:ff:ff
    inet XX.XX.XX.XX/32 brd XX.XX.XX.XX scope global ens3
       valid_lft forever preferred_lft forever
    inet YY.YY.YY.YY/32 brd YY.YY.YY.YY scope global ens3:0
       valid_lft forever preferred_lft forever
    inet6 ------------------/64 scope link 
       valid_lft forever preferred_lft forever

Теперь мне нужно чтобы пакеты отправляемые на сервер ZZ.ZZ.ZZ.ZZ имели в качестве источника мой вторичный ip YY.YY.YY.YY. А на все остальные сервера - имели стандартный ip XX.XX.XX.XX

Чтобы сервер ZZ.ZZ.ZZ.ZZ не был совсем абстрактный я предлагаю сервис ifconfig.me который сообщает мой ip-адрес. Его ip адрес 34.117.59.81.

ubuntu@server$ curl ifconfig.me
XX.XX.XX.XX

Всё работает - это мой первый ip.

Мои вопросы:

  • Как сделать чтобы высвечивался второй ip, но только для этого сайта?
  • Это делается через маршрутизацию ip route add или же через iptables SNAT?
  • можно ли для этого использовать ufw?
  • боюсь экспериментировать на проде, мб кто подскажет строчку или доку

 , ,

JANB
()

FPV в HD или посоветуйте камеру для трансляции

Форум — Science & Engineering

Задача: передавать HD видео хоть по кабелю, хоть по беспроводной связи (предпочтительнее) на комп с маленького медленного дрона который живет в коробке.

Нашел для этого камеру:

https://www.runcam.com/download/split-3-series/RC_Split_3_series_Manual_EN.pdf

Она и пишет на флешку и может передавать данные через трансмиттер.

В мануале указано:

Video resolution: 1920*1080 60fps
TV Mode: NTSC (720*480)/PAL (720*576) Switchable

TV Mode - это то что пойдет через трансмиттер? То есть HD она не выдаст?

И посоветуйте миниатюрную камеру (можно веб-камеру, но лучше wireless) для передачи на PC/Linux изображения в HD.

 , ,

JANB
()

html5 видео плеер со склейкой файлов. MPEG-DASH??

Форум — Web-development

У меня есть несколько видеофайлов (h264):

http://localhost/001.mp4 
http://localhost/002.mp4 
http://localhost/003.mp4 
http://localhost/004.mp4 
http://localhost/005.mp4 
...

И метаинформация об их длительности и сдвиге от начала суток (00:00:00). Эти файлы представляют собой суточную запись видео с камеры. Но, запись ведется по датчику движения, поэтому между ними есть «дырки».

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

Мне нужно что-то вроде этого: https://i.stack.imgur.com/HOjCs.png

У компании Hikvision (EzvizCloud) есть такой видеоплеер, но он не продается https://i.stack.imgur.com/I8krz.png .

Такие плееры есть и у других (в т.ч. российских) компаний предоставляющих VSaaS, но они все самописные.

upd:

В комментариях указали на необходимость использования MPEG-DASH. Это серверная технология, мы правильно настраиваем nginx и т.д.. Но, я не понимаю, каким образом в этом случае можно реализовать переход по временным меткам, чтобы вещался не просто поток, а можно было смотреть определенные фрагменты записи.

 , ,

JANB
()

Нужен PHP Junior + Laravel (удаленка) [closed]

Форум — Job

В команду нужен начинающий разработчик PHP. Можно без опыта, но со знаниями. Проект на C и C++, но нужно написать web-интерфейс.
Срок проекта - 2 месяца, это первый этап.

От кандидата необходимо:

  • Знание PHP на начальном уровне: встроенные типы данных, массивы, ассоциативные массивы, циклы;
  • Понимание классов на начальном уровне (свойства, методы, статические методы) - умение отличить экземпляр класса от самого класса.
  • Опыт работы с базами данных (SQL);
  • Базовые знание HTML/CSS (для интеграции в верстку);
  • Желание разобраться с фреймворком Laravel;
  • Работа по 6-8 часов в день. Лучше 8;

От кандидата желательно:

  • Знание Laravel;
  • Знание Javascript/JQuery;
  • Знание Linux.

Нужно будет делать:

  • Разработка Моделей, Миграций, Контроллеров;
  • Подключение верстки;
  • Разработка внешнего API;
  • Учить Laravel параллельно с работой (если не знаете его);

Мы предоставляем:

  • Ясное ТЗ;
  • Регулярные выплаты (раз в две недели, но вообще обсуждаемо);
  • Адекватный ценник в зависимости от квалификации (30000-40000 в месяц);
  • Ответы на новичковые вопросы.

Если с Laravel не работали - не страшно, он прекрасно задокументирован, ответим на вопросы, объясним куда что запрягать.

Нужно готовиться к тому что в случае незнания будем отправлять читать доку (конкретный раздел), потом честно отвечать на вопросы и показывать примеры. То есть, готовы брать новичка без опыта, учить бесплатно, но платить за выполненную работу.

Знания PHP нужны на уровне книги Мэтт Зандстра - «PHP Объекты, шаблоны и методики программирования». В первых пяти главах (130 страниц, можно осилить за день) содержится то что нужно знать об ООП в PHP, прочитайте перед тем как подавать заявку.

Предложения отправляйте на почту stwork-dev (собaka) yandex.ru.

Дадим легкое тестовое задание и поболтаем по скайпу.

 

JANB
()

Prices exclude VAT или как посчитать с НДС?

Форум — Talks

Смотрю цены у хостера OVH

https://www.ovh.ie/public-cloud/storage/object-storage/

Они пишут 0.01 евро (ex. VAT/month/GB ) это примерно 0.7 рубля. Но «ex VAT» это «без НДС».

Внизу они пишут «In accordance with the 2006/112/CE Directive, modified on 01/01/2015, prices exclude VAT. VAT may vary according to the customer's country of residence»

А как посчитать с НДС? И кто будет платить я или хостер? И кому платить, Российской Федерации или Франции?

И, главное, в какой момент изменится цена? Они заранее мне скажут сколько это будет стоить?

 ,

JANB
()

Хранить кучу террабайт - архитектура.

Форум — Admin

Есть несколько серверов которые эффективно обрабатывают данные (видеопотоки).

Результат нужно куда-то записывать (за месяц набегает 750ТБ)

Вариант 1. На каждый сервер воткнуть максимум HDD и писать прямо на него. Есть ли ограничения на серверы, можно ли на сервер втыкать много жестких дисков? Какой провайдер хостинга это позволяет? Кто будет менять эти диски если они будут выходить из строя?

Вариант 2. Иметь какое-то отдельное хранилище с множеством жестких дисков в которое будут писать сервера-обработчики. При этом достаточно иметь 4 сервера-обработчика, а хранилище уже пусть само разбирается как куда что писать.

Как делают обычно люди, какую архитектуру строят? У меня нет админского опыта.

Идеально сделать как предлагает Amazon - несколько тачек EC2 и одно большое умное S3. Но Amazon получается дорого, хотим повторить это в колокейшн и платить админам, а не амазону.

 , , ,

JANB
()

Расчет цен на Amazon S3

Форум — Admin

Всем привет!

Невозможно разобраться как правильно рассчитать затраты при пользовании сервисом хранения Amazon S3.

Я собираюсь хранить много видеофайлов 720p по 300МБ на срок до месяца. Каждый файл будет записан в s3, два раза считан и через месяц удален.

Я открываю https://aws.amazon.com/ru/s3/pricing/

Цены на хранилище

По деньгам, разумеется, мне нравится «Стандартное хранилище нечастого доступа». Вот только вопрос, насколько медленно оно работает? Оттуда можно смотреть видео?

Цены на запросы

Смотрю раздел в таблице (За запросы к объектам в стандартном хранилище нечастого доступа). Ага, значит чтобы положить файл, нужно сделать PUT/POST-запрос, а чтобы извлечь - GET.

А если файл оооочень большой, все равно один PUT-запрос?

И в той же табличке «Получение данных» - $0.01 за ГБ, ладно, норм.

Цены на передачу данных

А это то что такое? В таблице с ценами на запросы уже был пункт «Получение данных»!

Какая из этих цен что значит?

 , , ,

JANB
()

Как найти заголовок в текстовых протоколах?

Форум — Development

Как считывать данные и искать заголовки из текстовых протоколов? Вроде HTTP? Я отправляю запрос в сокет.

Мне приходит ответ

HTTP/1.0 200 OK
Server: nginx/0.6.31
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234

<данные>

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

Считывать побайтово пока не встречу \r\n\r\n?

Мне кажется, побайтово считывать медленно.

 , , ,

JANB
()

Сокеты - Несовпадение длины пакетов MJPEG при чтении

Форум — Development

Есть сервер который читает по 255 байт MJPEG поток и сразу их же по 255 байт отправляет на заданный ip (другой сервер)

std::stringstream requestQuery;
requestQuery << "GET /axis-cgi/mjpg/video.cgi?resolution=320x240 HTTP/1.1\r\n"
             << "Host: 88.53.197.250\r\n"
             << "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
             << "\r\n\r\n";
std::string request = requestQuery.str();

// sock - источник MJPEG
if (send(sock, request.c_str(), request.length(), 0) != (int)request.length()) {
    std::cout << "Error sending request." << std::endl;
    exit(1);
}

char buffer[256];
char cur2;
while (1) {
    bzero(buffer,256);
    size_t n = read(sock,buffer,255);
    if (n < 0)
        printf("ERROR reading from socket\n");
    size_t n2 = write(sockServ,buffer,255);  // sockServ - приемник MJPEG
}

Данные приходят, я их вижу они выглядят так

HTTP/1.1 200 OK\r\n
Cache-Control: no-cache\r\n
Pragma: no-cache\r\n
Expires: Thu, 01 Dec 1994 16:00:00 GMT\r\n
Connection: close\r\n
Content-Type: multipart/x-mixed-replace; boundary=--myboundary\r\n
\r\n
--myboundary\r\n
Content-Type: image/jpeg\r\n
Content-Length: 8530\r\n
\r\n
(тут пошли данные)

На заданном IP есть другой сервер.

Я открываю сокет, жду подключения (accept) и пытаюсь считать данные. Вначале считываю общий заголовок, Потом заголовок первого маркера "--myboundary" до значения длины, потом саму длину

bzero(buffer,512);
n = read(newsockfd,buffer,185); // общий заголовок
if (n < 0) error("ERROR reading from socket");
// printf("%s\n",buffer);

while(1) {
    bzero(buffer, 512);
    n = read(newsockfd, buffer, 56); // заголовок с --myboundary
    printf("HEADER:\n",buffer);
    printf("%s\n",buffer);// вывожу заголовок
    if (n < 0) error("ERROR reading from socket");
    bzero(filesizetext,20);
    int i = 0;
    while(1) {
        n = read(newsockfd, &ch, 1); // по одному символу до конца строки считываю значение Content-Length
        if (n < 0) error("ERROR reading from socket");
        if (ch == '\r')
            break;
        filesizetext[i] = ch;
        i++;
    }
    int currFileSize = atoi(filesizetext); // преобразую Content-Length в число
    n = read(newsockfd, buf, currFileSize); // считываю Content-Length байт
    if (n < 0) error("ERROR reading from socket");

	// идем дальше, снова считывать заголовок  с --myboundary
}

Когда доходим до «идем дальше, снова считывать заголовок с --myboundary» Вместо заголовка выводятся кракозябры - значит данные еще не кончились, и мы считали раньше чем нужно.

1) Чем может объясняться несовпадиние длины данных?

2) Можно ли с писать в сокет по 512 байт, а читать переменное количество?

 , , ,

JANB
()

C/С++ прошивка IP-камеры для трансляции RTSP через NAT (Иркутск/удаленка)

Форум — Job

Ищем программиста для реализации системы трансляции видео-контента с IP-видеокамеры на удаленный сервер.

Есть IP-видеокамера, у нее есть CGI интерфейс (API с коммандами в наличии). Нужно разработать:
- дополнение к её прошивке которое будет транслировать RTSP поток на сервер приема-передачи в интернете (C/C++)
- простенький сервер приема-передачи (сетевое приложение для Linux на С/С++) который отправит полученную картинку в vlc.

Сама камера умеет транслировать картинку в сеть, но загвоздка в том, что необходимо обходить NAT.

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

Разработка немного усложнена тем, что прошивку компилирует производитель камеры, поэтому между Вашим коммитом и отправкой готовой прошивкой могут проходить сутки.

Справиться нужно за две недели (можно быстрее), по деньгам - 40к. Предоплата обсуждается.

После успешного выполнения возьмем на постоянную работу в интересный проект.

Иркутск, но можно и удаленку, пришлем саму камеру.

Вопросы в комменты, либо на почту «sosnovskieugene» на гугле

 , , , ,

JANB
()

Добавление в очередь по таймауту (nodejs + kue)

Форум — Development

Есть запросы пользователя, которые приходят в различное время (создаем задачи на внешнем сервисе)

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

Если я правильно понял - мне нужна очередь. В нее будем по таймеру добавлять задачи с высоким приоритетом и добавлять запросы пользователя с невысоким.

Пишу на nodejs, использую kue https://github.com/Automattic/kue

Вот пример (сам написал), это нормальное решение? Какие могут быть ошибки?


var http = require('http');

var kue = require('kue');
var queue = kue.createQueue();


function pausecomp(millis) { //emulate large task
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while(curDate - date < millis);
}

// Добавление задачи выполняемой по таймеру
function timerJob (name){
    console.log('Adding job', name);
    var job = queue.create('myjobs', {
	name: name,
	type : 'timer'
    }).priority('high').save(); // high priority!
}

// Добавление задачи запроса пользователя
function requestJob (name) {
    console.log('Adding job', name);
    var job = queue.create('myjobs', {
	name: name,
	type : 'request'
    }).save();
}


// обработчик задачи запроса пользователя
function processRequestJob(job, done) {
    console.log('processRequestJob start', job.data.name)
    pausecomp(2000);
    console.log('processRequestJob done', job.data.name)
    done();
}

// обработчик задачи запускаемой по таймеру
function processTimerJob(job, done) {
    console.log('processTimerJob start', job.data.name)
    pausecomp(100);
    console.log('processTimerJob done', job.data.name)
    done();
}

// стартуем очередь
queue.process('myjobs', function (job, done){
    if (job.data.type == 'request') {
	processRequestJob(job, done)
    }
    else {
	processTimerJob(job, done)
    }
});


var server = http.createServer(function(req, res) {
    res.writeHead(200);
    res.end('requestjob');
    var dt = new Date()
    requestJob('request ' + dt.getTime() + ' __ ' + req.url);
});

// стартуем http-сервер
server.listen(8088);
console.log('start listen 8088');


// стартуем выполнение задач по таймеру
setInterval(function (){
    timerJob('repeat timer job');
}, 5000);

// добавляем несколько демо-задач
requestJob('first');
requestJob('second');
requestJob('third');
requestJob('third2');
requestJob('third3');
requestJob('third4');

 ,

JANB
()

Распознавание цифр на серой капче с геометрическими фигурами.

Форум — Security

Капча с оттенками серого, всегда 6 цифр. Сложность в том, что на неё накладываются геометрические фигуры и цвета цифр в месте пересечения инвернтируются.

Примеры:

http://itmages.ru/image/view/5226734/1e172311 http://itmages.ru/image/view/5226733/b91e814f

У сервиса можно запрашивать капчу несколько раз и он будет возвращать одну и ту же! Но по-разному «зашумленную»! Это офигенно облегчает задачу.

Сейчас скармливаю её tesseract-ocr и из 10 вариантов одних и тех же цифр он только на двух-трех распознает по одному символу.

Можно дальше увеличивать число вариантов одних и тех же цифр (сервис исправно её отдает, а потом еще и принимает в форме), но думаю есть способы улучить распознаваемость.

Подскажите как это сделать, какие есть инструменты, технологии? Какой порядок действий Вы бы предприняли?

Написаный код (если получится) опубликую прямо тут.

 ,

JANB
()

Доступ к данным через QModelIndex через QAbstractItemModel

Форум — Development

Вот документации Qt http://doc.qt.io/qt-5/qtwidgets-itemviews-customsortfiltermodel-example.html наткнулся на код:

QVariant leftData = sourceModel()->data(left);

А почему эти светлые люди не пишут просто

QVariant leftData = left->data();

 

JANB
()

[fixed] Internet Explorer фантастически врет насчет пикселей, а Firefox нет

Форум — Web-development

На сайте http://quizdash.co.uk/ в IE весь контент растягивается по всему экрану, но в панели разработчика он утверждает что контент не растянут и имеет оригинальный (маленький) размер, хотя сам увеличивает страницу в 2 раза. http://storage2.static.itmages.com/i/16/0201/h_1454300006_8737908_ad9e854b85.png

Разумеется опция «масштаб» выставлена в 100%. Остальные браузеры (Firefox, chrome) показывают всё нормально в оригинальном размере. http://storage2.static.itmages.com/i/16/0201/h_1454300006_9206064_45bebfa35d.png

Вопрос: это незадокументированная фишка IE или в чем дело? Как заставить его не растягивать сайт?

Линукс. Линукс здесь притом, что IE запускается в VirtualBox на Xubuntu, 
сайт бежит на Debian, 
а код шаблонов я пишу в emacs в Xubuntu. 
Ну и потому что тут лучшие спецы. На SO молчат.

upd:

Внезапно помогла вот такая магия:

@media only screen {   
    @-ms-viewport { width: device-width; }
}
@media screen {
	@-ms-viewport {
	width: device-width;
	}
}

 , , ,

JANB
()

Движение в невесомости без опоры - не могу найти видео

Форум — Talks

Где-то проскакивало видео где астронавты ставили опыты на МКС: мужика располагали в центре отсека где он не доставал до стен, отпускали и он пытался плавающими движениями двигаться в пространстве и почти ничего не получалось.

Вроде это были китайцы.

Искал по запросу Conservation law in Weightlessness не нашел.

Помогите...

 ,

JANB
()

В логе апача отображаются запросы к другому серверу

Форум — Admin

Сервер на Ubuntu.

Обычные запросы к моему сайты начинаются с «/». Например, /blog.

Сейчас случайно увидел запрос "http://testp5.mielno.lubin.pl/testproxy.php" - но это не мой сайт и вообще непонятно как к нему можно обратиться? И, да, меня взломали?

1.1.1.1 - - [15/Jan/2016:03:47:21 -0500] "POST /blog/wp-cron.php?doing_wp_cron=1212841.9 HTTP/1.0" 200 187 "-" "WordPress/4.3.1; http://mysite.ru/blog"
2.2.2.2 - - [15/Jan/2016:03:47:21 -0500] "GET /blog/index.php/api/get_posts HTTP/1.1" 301 368 "http://mysite.ru/" "Mozilla/5.0 (Linux; Android 5.0.2; Lenovo S60-a Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36"
2.2.2.2 - - [15/Jan/2016:03:47:22 -0500] "GET /api/v1/users/208/questions/66 HTTP/1.1" 200 1643 "http://mysite.ru/answer" "Mozilla/5.0 (Linux; Android 5.0.2; Lenovo S60-a Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36"
2.2.2.2 - - [15/Jan/2016:03:47:22 -0500] "GET /blog/index.php/api/get_posts/ HTTP/1.1" 200 221605 "http://mysite.ru/" "Mozilla/5.0 (Linux; Android 5.0.2; Lenovo S60-a Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36"
3.3.3.3 - - [15/Jan/2016:03:50:00 -0500] "GET http://testp5.mielno.lubin.pl/testproxy.php HTTP/1.1" 200 1989 "-" "Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/31.0"

 ,

JANB
()

Делаем div кликабельным: anchor-tag или onclick

Форум — Web-development

Зашел спор, а точнее срач в скайпе насчет того как правильно делать div'ы кликабельными

Ну, например, несколько квадратов - хочу сделать их кликабельными:

<div class="quad">
     <p>This is content1</p>
</div>

Мне нужно оборачивать их так:

<a href="http://ya.ru"><div class="quad">
     <p>Variant 1</p>
</div></a>

Или прописывать событие onClick?

<div class="quad" onClick="document.location='http://ya.ru'">
     <p>variant 2</p>
</div>

Речь идет о списке товаров, и клик должен вести на страницу товара.

Что семантически правильно? Например, с точки зрения HTML5.

Поиграться можно тут - https://jsfiddle.net/67gzad4h/

 ,

JANB
()

Начинающий ruby-on-rails-программист ищет работу.

Форум — Job

О себе: студент последнего курса. Умею Java, зарабатываю веб-разработкой: joomla, php, html, css, Twitter Bootstrap.
Английский технический, французский разговорный.

Внезапно очень полюбил Ruby. За плечами известный труд по Ruby on Rails Майкла Хартла, теперь хочу перейти к практике. Готов на совсем небольшую зарплату на время испытательного срока.

Вообще ищу удаленку, или работу в городе Лилль (нор па де Кале), это север Франции.

Если вы не хотите меня брать - напишите что мне подучить, какие книги подчитать?

 , , ,

JANB
()

Сокеты UNIX и нагрузка на ПЗУ

Форум — Development

сем привет. Разрабатываем с коллегами приложение для прибора, в качестве ПЗУ на котором используется SD-карта. Возникла необходимость наладить межпроцессорное взаимодействие.

Вопрос: сокеты в файловом пространстве имен (сокеты UNIX) при обмене данными пишут что-нибудь на файловую систему или их обслуживает ОС находясь в ОЗУ? Беспокоюсь за ресурс SD-карты.

 ,

JANB
()

RSS подписка на новые темы