1 место ZennoPoster: Кладезь безграничных идей и возможностей. Часть 1 (JS+Mysql)

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
723
Баллы
93
==========================

Вторую часть я буду дописывать уже 23-24 числа.

==========================

В этой же части, я вас познакомлю с JS + Mysql

imag3e.png

Те, кто еще работают с браузером - советую познакомится с этой темой.

При работе в браузере, вас это будет мало волновать... Но стоит вам познакомится с post/get запросами, как эта проблема станет достаточно серьезной и опасной.

im22age.png

Ты роешь исходник каждого запроса с ног до головы, НО НЕ МОЖЕШЬ НАЙТИ ЭТО ПАРАМЕТР!!!!!!!


И тогда уже начинаешь понимать, кто тут замешан



Я?
t3humb.png.gif





До недавнего времени самым эффективным способом борьбы с этим было

Там, где происходила эта омерзительная бойня событий, even-тов, и остальная дрянь , я просто разворачивался и уходил пить чай. Приходил.. плакал и опять шёл пить чай уже с печеньками....


Но как бы это не было печально .... в будущем нас ждет еще больше этого @#$%^&* .

Далеко ходить не надо..
Яндекс, рамблер , Mail - три девицы у окна, код писали до поздна.

  • 1- ая : регистрировать себя дает, но письма хрен отправишь.. Фильтр (на тебя мало данных, браток).

Так как регистрацию мы проводлили с помощью post запроса, то от себя не передавали событий в виде: click, focus, смещения мыши, event_собитыя.

Маил это с легкость видит и ограничивает твои права (спасибо говорите, что хоть письма дает принимать.. Старшая сестра яша и это отнимает :dl: ).

  • 2-ая: Яндекс. Утро.. 9:00 . Ничего не предвещало беды... Рядовой Вася садится за панель управления и НАЧИНАЕТ СИДЕТЬ ПРЯМО НА ГЛАЗАХ!!!
Еще бы... (КТО не в курсе, А-парсер в тот момент выпустил новый функционал: Регер Яндекс акков.)

Скорость регистрации была просто ужасающая !!!! За день регистрировалось до 100-200к яндекс почт. (спс тебе ripкапча, за предоставленную возможность уходить в - 10$ баланса :D ).

Вообщем, Вася для себя решил:

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

б) даем и дальше работать этому монстру, но баним отправку / принятия писем с них (+ усложняем капчу с циферок до буковок). :ay:
----------------------------------------------------------------

НО!! Пришел второй монстр - КАПЧА МОНСТР !!!

Тут то нервишки у Васи не выдержали, и приступил он к ПЛАНУ A.

  • 3-ая: Рамблер. Собственного мнения у младшей сестры не было, то решила повторить за старшей. (но так как тупенькая, обходится ее новая защита на раз, два).


-----------------------------------------------------------------------------

Но оставим сей длинный пролог , и перейдем к практики :bz:



С 2011 года Gmail нас балует вечно не меняющиеся формой входа.
833da2662b8.jpg
При попытки войти в аккаунт, наш сниффер вот что словил:

GALXSPZiuXlijCg
hlru
_utf8
bgresponse!FBdCdh6ASgU0x5ZEXYI3gXIlIdoCAAAAjFIAAAQlKgD7w1iGlpznAg7-tXqivNtS7QWZDqBx0JdUWMMQeIP9N2_rhnpwFA4JqIRZODfhi6IikUkZKsKEv5BGTBsLMTjv_cuKHA7CM8cJpXAJuJACYGxxZOV1hl-XH6Iv8KuUD_1f8gAS09tiEZHSrGM9S5ucI8uHIo11RNuwfvEa2nwf423UaojDtXprXD-sxl3Mxm7_U-gvncl4Eqc0QK1mIKqrkJYz8ViXuiXEY8-69jp5d2oTEk7drSGCii7q_sc23_QuY7yb8-scZaYrSSVUMy-TycEIPFLoWPVM5NZM0ZwQhMA5_vXIA0r7ChixuOumr-z5EWH3MmS4zohIPHM
pstMsg1
dnConn
checkConnectionyoutube:479:1
checkedDomainsyoutube
Email3_konkurs_statie
Passwdwin
signInВойти
PersistentCookieyes
rmShown1
[TBODY] [/TBODY]
Из всех возможных параметров, единственный не подвластный нашему взору был - bgresponse.

Для этого, мы идем в Google Chrome и устанавливаем плагин - Visual Event

Плагин позволяет нам наблюдать все event-собитыя , которые происходят на странице при клике, вводе символов, и других ajax событий.

aa611cbf03.jpg


Прекрасно..
Мы с первой же попытки нашли js-события , где генерируется наше значения - bgresponse.



chrome _ настало твое время.
  1. Открываем браузер
  2. Жмем F12
  3. Попадаем на вкладку Sources (
1.gif

В самом конце мы видим скрипт, который Visual Event изначально для нас поймал.
Наши действия:

  1. Ставим бряки на скрипт, чтобы в дальнейшим отловить его действия в отладчике хрома.
  2. В scope variables выглядываем значения переменных, которые генерирует наш js скрипт.
  3. Идем в консоль и проверяем работу скрипта


3.gif



Код:
 try {
  document.bg.invoke(function(response) {
  document.getElementById('bgresponse').value = response;
  });
  } catch (err) {
  document.getElementById('bgresponse').value = '';
  }


Благодаря отладчику, мы нашли скрипт, который генерировал значения - "bgresponse".



HTML:
!oqFCFTd6Lc3imBxE8ytflUhyo8sCAAAAMlIAAAAKKgEAwzkrxLJGWOEBXZTxWeT9dS4Fx432yUwYYppJSspeR4BlvGbZ5iuljw6H_4ZAaxijcm6FEIqsObcJ3egZ5G-NhH-66_5-wzAry9E0vKVhq8-gax3EakkzswE9QgH6WOUgJhrReBlBxer1W2M7x1OQYaoGUkJlzuG4mYlkTRnLCpO-mRYbXL5cZUwqLk28GBUWn2S-EAk3RykYy51wDN2Om8Z9eOS6zCtxxA-6-9Bsc9-FLSjcgGmTiVn0316cISXcwTD0Gz2LqsooazA0QgAfdkfr7gUGcOoRsGpUyC-coXoEDsxR7gYVwFkkK-BLGaOYwrTGwaRRHTRvd6kOrUJQ3A

Хоть мои познания в JS и скудны, даже я могу наблюдать что скрипт маловат для такого куска кода) . По моему мнению, за - " document.bg.invoke(function(response) " - спрятан еще один js , который генерирует сей длинный код. А маленький кусок кода (см.выше), скорее всего передает в переменную (bgresponse) тот длинный хеш.

===================

Какие наши дальнейшие действия?


  1. Обратно заходим в откладчик.
  2. Ищем колонку Call Stack (стеки вызовов,куда отправляют друг-другу информацию js скрипты между собой).
  3. Просматриваем их и находим на наше мнения подходящий кусок кода .

4.gif



БИНГО!

7d12413df7.jpg

Мы нашли js, который вопроспроизвод такой длинней хеш-код. (помимо md5, производится подмешка соли)


Если вы не знаете js или c# , то скорее всего вам придется прибегнуть к помощи фрилансеров. На руках у вас будет вся информация, какие js-ки использует сайт и каким образом... Это очень ускорит процесс переноса кода на c# сниппет зеннопостера.


im11age.png

 

Для запуска проектов требуется программа ZennoPoster.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

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

Последнее редактирование:

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
723
Баллы
93
Удаленное управление зеннопостером + Админка
(статиситка, процесс выполнения, добавления заданий).

image.png




Во второй части нашей статьи, мы убьем сразу двух зайцев:

1)
Избавимся от наболевших текстовых логов .

J2bJ64XfR3nw26.jpg


После каждого проспама по контакту, меня жутко напрягало лезть в Текстовый документ и рассматривать явно не самый красивый и информативный лог.

Когда я наконец достиг точки кипения, было РЕШЕНО! Я ищу PHP кодера и мы пишем админку.

Благодаря Voldemar -у, поиск кодера и раздумий над внешним видом админки не заставил себя ждать.

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

9bU6Nfw.png


(прежний вид)


Теперь задача стояла таким боком: научить зеннопостер массово брать данные с mysql таблицы.

==========================
Давайте рассмотрим , как мы решали эту проблему.


1) Берем аккаунты с mysql таблицы.
(если ваши данные хранятся локально, то можно пропустить этот пункт).

Код:
var result = String.Empty;
var table = project.Tables["Data"];
var command = new MySql.Data.MySqlClient.MySqlCommand();
command.CommandText = "SELECT * FROM projects WHERE active=0;";  \\ Команда на поиск аккаунтов, где в таблице "projects" ищем аккаунты , в которых есть "0" в столбце "active"
var connectionSTring = "server=mysql.blablabla.myjino.ru;user=pashalka;database=win/no;port=3306;password=12345;";  \\ Авторизация

try
{
    command.Connection = new MySql.Data.MySqlClient.MySqlConnection(connectionSTring);
}
catch (Exception e)
{
    result = "Mysql ошибка подключения";
}
if (result!=String.Empty)
{
    return result;
}
try
{
    command.Connection.Open();
    var read = command.ExecuteReader();
    while (read.Read())
    {
        table.AddRow(
        read["acc"].ToString()+"\t");  \\ экспортируем полученные данные в таблицу "acc"
    }
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
    result = "Mysql ошибка "+e.Message;
}
finally
{
    command.Connection.Close();
}
return result;

2) Узнаем, что случилось с аккаунтами благодаря Api ВК.

e0995b08eb.jpg

3) Учим зенннопостер импортировать полученные данные обратно в таблицу

Код:
var result = String.Empty;
var command = new MySql.Data.MySqlClient.MySqlCommand();
var connectionSTring = "server=mysql.myname.myjino.ru;user=lexone;database=lexone;port=3306;password=parol;";
try
{
    command.Connection = new MySql.Data.MySqlClient.MySqlConnection(connectionSTring);
}
catch (Exception e)
{
    result = "Mysql ошибка подключения";
}
if (result!=String.Empty)
{
    return result;
}
try
{
    command.Connection.Open();
    string request = "INSERT INTO vk1 (avatar, Data, group1, post) VALUES (@avatar, @Data, @group1, @post);";  \\ ищем в таблице vk1 столбцы, куда будем добавлять данные с лога.

    MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand(request, command.Connection);
    string avatar = project.Variables["avatar"].Value;
    string Data = project.Variables["Data"].Value;
    string group1 = project.Variables["group1"].Value;
    string post = project.Variables["post"].Value;

       \\   ищем столбцы и добавляем в них данные из выше перечисленных переменных

    com.Parameters.AddWithValue("@avatar", avatar);
    com.Parameters.AddWithValue("@Data", Data);
    com.Parameters.AddWithValue("@group1", group1);
    com.Parameters.AddWithValue("@post", post);
    com.ExecuteNonQuery();
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
    result = "Mysql ошибка "+e.Message;
}
finally
{
    command.Connection.Close();
}
return result;

---------------------------------------------------------------------------------------------------
Скачать шаблон: https://yadi.sk/d/ZtWdVBfLgo4wF
Скачать админку: https://yadi.sk/d/8MzAzJkWgo5Ab
---------------------------------------------------------------------------------------------------
imag1e.png

---------------------------------------------------------------------------------------------------

> ТЕПЕРЬ ДАВАЙТЕ ПЕРЕЙДЕМ КО ВТОРОЙ ПРОБЛЕМЕ <

٩(̾●̮̮̃̾•̃̾)۶





Проблема в виде "входных настроек" особо набирала обороты, когда приходилось по 100 раз на день переключатся между:

Удаленным сервером ⇐ ⇒ рабочей машиной.


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

За основу был взят первый опыт с базой данных (админка со статистикой).

i2mage.png

Сниппет берет данные из mysql таблицы и кладет в переменные
для дальнейшей работы шаблона

-----------------------------------------------------------​

Чтобы данные появились в mysql базе, нам нужно их туда добавить.

Для этого, biohan любезно подготовил по моей просьбе новую админку.

im3age.png



-----------------------------------------------------------------------------------------------------------


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

---- ----​

Для этого нам нужно

  1. Планировщик зеннопостера (выставляем выполненеия проекта каждую минуту).
  2. Сигнал для зеннопостера, какие акки он должен брать, какие нет.
  3. Обмен данными в режиме реального времени (сервер + зеннопостер). Так как зенка любит сбоить, мы должны на каждую итерацию отправлять. сколько мы уже запостили сообщений .

Если с планировщиком все понятно, то вот с сигналом уже становится сложнее.

Мой выбор пал на такой вариант:

96aeba115e.jpg

после добавления всех вводных на предыдущей странице, мы можем управлять этим проектом...​


Теперь же при нажатии "НАЧАТЬ", в mysql таблце изменяется столбец "active" с нуля на единицу

В этом случае , при прошествии минуты в планировщике зеннопостера .. наш c# сниппет подхватит все аккаунты со значением "1" в стобце active и обратно заменит его на НОЛЬ.

Почему? А чтобы другие потоки не взяли этот аккаунт :P (да.. наш проект работает многопоточно).

Код:
// блокируем выполнение, чтобы другие потоки не испортили

lock(SyncObject)
{

   var result = String.Empty;
   var command = new MySql.Data.MySqlClient.MySqlCommand();
   command.CommandText = "SELECT * FROM projects WHERE active=1 LIMIT 1 ;";
   var connectionSTring = "server=mysql.test.myjino.ru;user=test;database=test;port=3306;password=test;";

try
{
    command.Connection = new MySql.Data.MySqlClient.MySqlConnection(connectionSTring);
}
catch (Exception e)
{
    result = "Mysql ошибка подключения";
}
if (result!=String.Empty)
{
    return result;
}
try
{
    command.Connection.Open();
    var read = command.ExecuteReader();
    while (read.Read())
    {
        project.Variables["id"].Value = read["id"].ToString();
        project.Variables["acc"].Value = read["acc"].ToString();
        project.Variables["image"].Value = read["img"].ToString();
        project.Variables["title"].Value = read["header"].ToString();
        project.Variables["col_vo"].Value = read["max"].ToString();
        project.Variables["count"].Value = read["done"].ToString();
        project.Variables["pause"].Value = read["pause"].ToString();
    }
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
    result = "Mysql ошибка "+e.Message;
}
try
{
    command.Connection.Close();
    command.Connection.Open();
    var request = "UPDATE projects SET active = 0 WHERE id="+Convert.ToInt32(project.Variables["id"].Value)+";";
    MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand(request, command.Connection);
    com.ExecuteNonQuery();
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
result = "Mysql ошибка "+e.Message;
}
finally
{
    command.Connection.Close();
}
return result;

}



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



Код:
var result = String.Empty;
var command = new MySql.Data.MySqlClient.MySqlCommand();
var connectionSTring = "server=mysql..myjino.ru;user=;database=;port=3306;password=;";
try
{
command.Connection = new MySql.Data.MySqlClient.MySqlConnection(connectionSTring);
}
catch (Exception e)
{
result = "Mysql ошибка подключения";
}
if (result!=String.Empty)
{
return result;
}
try
{
command.Connection.Open();
string request = "UPDATE projects SET done  = '"+
    project.Variables["Counter2"].Value+
    "' WHERE id = '"+
    project.Variables["id"].Value+
    "'";
MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand(request, command.Connection);
com.ExecuteNonQuery();
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
result = "Mysql ошибка "+e.Message;
}
finally
{
command.Connection.Close();
}
return result;


Если же произошел какой-то сбой, то не беда) Создаем Экшн BAD_END и ставим на него этот сниппет.



Код:
var result = String.Empty;
var command = new MySql.Data.MySqlClient.MySqlCommand();
var connectionSTring = "server=mysql..myjino.ru;user=;database=;port=3306;password=;";
try
{
command.Connection = new MySql.Data.MySqlClient.MySqlConnection(connectionSTring);
}
catch (Exception e)
{
result = "Mysql ошибка подключения";
}
if (result!=String.Empty)
{
return result;
}
try
{
command.Connection.Open();
string request = "UPDATE projects SET active  = '1' WHERE id = '"+
    project.Variables["id"].Value+
    "' ";
MySql.Data.MySqlClient.MySqlCommand com = new MySql.Data.MySqlClient.MySqlCommand(request, command.Connection);
com.ExecuteNonQuery();
}
catch (MySql.Data.MySqlClient.MySqlException e)
{
result = "Mysql ошибка "+e.Message;
}
finally
{
command.Connection.Close();
}
return result;

Меняет значения active вновь на единицу, чтобы новый поток смог взять этот аккаунт еще раз.


4c09aa4806.jpg

---------------------------------------------------------------------------------------------------
Скачать шаблон: https://yadi.sk/d/P_VhxTFYgo7Su
Скачать админку: "скоро будет"


---------------------------------------------------------------------------------------------------​


(очень надеюсь, что встану утром ( :cd: ) и начну дописывать 3, 4, 5, 6 [и остальные пункты...... *которые пока остаются в секрете]. )
 
Последнее редактирование модератором:

svaminar

Client
Регистрация
21.08.2013
Сообщения
834
Благодарностей
369
Баллы
63
lexone
у меня часть каринок на отображается. К примеру с ргхост
А статья кулл.
 
  • Спасибо
Реакции: lexone

sof

Client
Регистрация
15.04.2013
Сообщения
832
Благодарностей
183
Баллы
43
За креативную подачу материала однозначно лайк. Полезным было бы для меня если бы хоть немного в JS понимал хоть что-то... В силу недостатка своих знаний в этом направлении кроме красивых анимированных картинок полезного для себя не нашел...:ak:
 
  • Спасибо
Реакции: lexone

AlisaZ

Client
Регистрация
17.09.2014
Сообщения
104
Благодарностей
140
Баллы
43
Сказать - великолепно, ничего не сказать, это новый практический учебник по Яваскриптам и Мускэлю - ЛАЙКнула!!! :dh::dh::dh:
С нетерпением жду продолжения.
 

execut0r

Client
Регистрация
12.03.2014
Сообщения
254
Благодарностей
260
Баллы
63
Печально что пока непонятно по JS ничего. Особенно, что касается импорта. Прочитаем еще пару десятков раз. А лучше сами попробуем повторить =)
Эта часть позновательна.
Вторая часть про админки - вообще классная, особенно с тем, что еще и надавал и шабов и саму админку. Жирный плюс в карму.
Ждем продолжения.
 
  • Спасибо
Реакции: lexone

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 225
Благодарностей
878
Баллы
113
Про mysql - ну почти мой проект под авиту :-)
Только вынеси весь mysql в php, а то палишь логины/пароли к базе по сети :-)
 
  • Спасибо
Реакции: lexone

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
723
Баллы
93
Обновил картинки.

P.S чтобы mysql сниппеты заработали, вам надо...

1) Создать папку ExternalAssemblies ( \ZennoPoster Pro\Progs\ExternalAssemblies )
2) Поместить туда MySql.Data.dll (изначально он в папке :\ZennoLab\ZennoPosterPro\Progs\ )
3) А в шаблоне (который я приложил), найдете как добавлять в Using.
 
Последнее редактирование:

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
723
Баллы
93
За креативную подачу материала однозначно лайк. Полезным было бы для меня если бы хоть немного в JS понимал хоть что-то... В силу недостатка своих знаний в этом направлении кроме красивых анимированных картинок полезного для себя не нашел...:ak:
Не поверишь... Я В JS тоже полный ноль)

Но отладчик почти все делает за тебя (находит моменты, где генерируется недостающий тебе параметр).
А дальше уже бежишь на фрилансер и заказываешь себе сниппет :dm:
 
  • Спасибо
Реакции: Goodmark

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 636
Благодарностей
454
Баллы
83
все круто только если мы не используем барузер и нам нужна админка то зачем тут вообще зенка?)
проще написать тот же код на питоне и не устраивать танцы с бубнами вокруг зеннопостера)
 
  • Спасибо
Реакции: lexone

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
723
Баллы
93
все круто только если мы не используем барузер и нам нужна админка то зачем тут вообще зенка?)
проще написать тот же код на питоне и не устраивать танцы с бубнами вокруг зеннопостера)
Я вот не знаю питон.

С# - на уровне подправить чужой код.

А благодаря зеннопостеру, мне остается вставить c# сниппет на добавления в базу данных и никакой мароки с прокси,потоками, архитектурой проекта и.т.д
Остальная часть работы идет уже со встроенным функционалом зеннопостера.
 
Последнее редактирование:
  • Спасибо
Реакции: goblin2oo8

alekwuy

Client
Регистрация
06.04.2013
Сообщения
1 636
Благодарностей
454
Баллы
83
Я вот не знаю питон.

С# - на уровне подправить чужой код.

А благодаря зеннопостеру, мне остается вставить c# сниппет на добавления в базу данных и никакой мароки с прокси,потоками, архитектурой проекта и.т.д
Остальная часть работы идет уже со встроенным функционалом зеннопостера.
c# тоже можно на серваке пускать, это лично мое мнение но тут зенка костыль
ну а так статья понравилась)
 
  • Спасибо
Реакции: lexone

CSS

Client
Регистрация
22.05.2010
Сообщения
1 328
Благодарностей
645
Баллы
113
все круто только если мы не используем барузер и нам нужна админка то зачем тут вообще зенка?)
проще написать тот же код на питоне и не устраивать танцы с бубнами вокруг зеннопостера)
Дельное замечание, ладно если там работа через web идёт (браузер когда нужен), а тут же get запросы к API.
С другой стороны завтра будет работа через web - и тут админка как раз то что нужно.
4 года назад в уме проектировал такой вариант (чтобы избавиться от локальной машины и иметь возможность масштабироваться по дедикам), но никак не возникало сильной потребности в этом. Максимум 2 дедика было в работе всегда, а потом вопрос закрыл питон, увеличив тем самым пропускную способность с 300к постов в день (ZP) до 5kk в день (питон), на том и остановился.
 
  • Спасибо
Реакции: alekwuy и lexone

7make

Moderator
Регистрация
25.06.2011
Сообщения
1 519
Благодарностей
1 242
Баллы
113
Подход хороший, но есть моменты которые не раскрыты.

Не раскрыл почему был выбран MySQL(СУБД), а не файлы, скажем JSON?
Что будет если хост с базой упадет?
Не подключимся к базе, что с данными /управлением будет?
Сколько времени теряем на коннектах к базе и Get/Set данных?

Имхо, при 50+ потоках все это упадет.
Нужно все это надежнее и производительнее оформлять.
Лишнее промежуточное звено - удаленный хост с СУБД.

Имхо, потенциал (возможные проблемы ) MySQL избыточен тут.
В этой задаче и схеме заменить его на JSON/XML файлы.
Писать лог в формате JSON/XML и на них уже вешать любой UI.
Раз в минуту пулять на хост через post/get или по фтп.
Если нужно в вебе открыть все это.

Еще лучше не пулять удаленно, а писать локально/в облако.
Писать скажем JSON лог на Dropbox.
На железе оператора развернуть локальный веб-сервер + админку/UI
 
Последнее редактирование:
  • Спасибо
Реакции: steamn, AlisaZ и CSS

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
723
Баллы
93
- Что будет если хост с базой упадет?
Имхо, при 50+ потоках все это упадет.
Почему у меня на бесплатном джино и в 100 потоков держало базу?

Писать лог в формате JSON/XML и на них уже вешать любой UI.
Спасибо за идею, даже не задумывался об этом :ay:
Но пока и субд хватает с головой)

На железе оператора развернуть локальный веб-сервер + админку/UI
Кто ж мешает) можно и на денвере поднять Mysql...

Писать скажем JSON лог на Dropbox.
А это уже реализовано) но слегка для другой задачи (мб затрону в сл.конкурсе).

\\ напоминаю, я лишь на начальном уровне программирование, в отличии от вас ребят (7make , CSS) .... кручусь с костылями как могу :dm:
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 225
Благодарностей
878
Баллы
113
Подход хороший, но есть моменты которые не раскрыты.

Не раскрыл почему был выбран MySQL(СУБД), а не файлы, скажем JSON?
Что будет если хост с базой упадет?
Не подключимся к базе, что с данными /управлением будет?
Сколько времени теряем на коннектах к базе и Get/Set данных?

Имхо, при 50+ потоках все это упадет.
Нужно все это надежнее и производительнее оформлять.
Лишнее промежуточное звено - удаленный хост с СУБД.

Имхо, потенциал (возможные проблемы ) MySQL избыточен тут.
Mysql более гибкий чем файлы уж поверьте и уж точно в разы быстрее.
Масшатбируемость немного другая у меня одни проекты дергают данные с двух серваков...
Если хост с базой падает, то да проект останавливается... но пока у меня зенка чаще вставала...
P.S. на mysql лимит 1000 коннектов стоит )

Народ вы главную фишку походу не просекли - удобство конечному потребителю - т.е. можно сделать сервис того же постинга в Авиту и предоставлять людям возможность управлять своими заданиями, а с них денежку брать, самому можно уехать отдыхать например :-)
Отдельное спасибо за Visual Event - не знал что такое есть хотя дааавно задумывался о такой возможности :-)
 
  • Спасибо
Реакции: alexstpm и lexone

7make

Moderator
Регистрация
25.06.2011
Сообщения
1 519
Благодарностей
1 242
Баллы
113
Gfoblin,

Я же и говорю, что MySQL на столько гибкий и крутой, что его избыточно юзать для простой передачи на UI пару кило строк. Надежнее писать в JSON разметку которую клиент будет приходить на бэкенд с зенно и забирать, а не наоборот, слать на фронтенд.

Сервис для паблика тоже громко сказано.
Сколько серваков с зенкой/ботами нужно тогда и какая маржа на всем этом будет:-)

Но вопрос даже не в MySQL.
Какую задачу решаем дублированием управления через веб морду?

п.с. продолжу дискус после голосовалки , а то скажете накинулся ))
 
Последнее редактирование:
  • Спасибо
Реакции: lexone

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
723
Баллы
93
Какую задачу решаем дублированием управления через веб морду?

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



+ кому не хочется красивого и гибкого управления в браузере :dk:в придачу с удобной статистикой всей проделанной работы.
 
  • Спасибо
Реакции: AZANIR и alexstpm

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 225
Благодарностей
878
Баллы
113
Но вопрос даже не в MySQL.
Какую задачу решаем дублированием управления через веб морду?

п.с. продолжу дискус после голосовалки , а то скажете накинулся ))
Ну можно в 1 клик скажем так отключить задачи которые были записаны с понедельника по вторник третей недели сентября у которых юзер старше 70 лет и его мыло содержит более 3х цифр при этом в пятницу вечером они запускались более 20 раз :-)
А вот если это дело в разных файлах хранится я бы посмотрел ) как это исполнить...
Веб интерфейс решает вопросы удаленного управления с той же мобилы например - если канал странный EDGE или 2г :-)
Скажу по секрету что самый первый мой проект сразу юзал mysql - я его подключил к опенкарту и преспокойно лью на авито товар и обновляю там ценники :-)
 

Voldemar

Client
Регистрация
13.04.2014
Сообщения
455
Благодарностей
51
Баллы
28
Спасибо за труд!
Вещь нужна, например у меян клиенты по другим софтам имеют личный кабинет свой, я бы туда и по ВК сделал сервис. Насчет маржинальности тут тоже мне кажется все ок, сервер под 1 клиента даже если брать = 400 рублей/ в месяц. Вы берите 900 например с него. Уже в плюсе. Если у Вас использование Ваших аккаунтов при рассылках, то включите это в себестоимость 1 сообщения для клиента. Например берет по 70 копеек с клиента за сообщение.
Идея классная, просто у кого какая уже фантазия, а там уже и надобность )
 
Последнее редактирование:

looternsk

Client
Регистрация
24.08.2013
Сообщения
7
Благодарностей
1
Баллы
3
ТС уже 25 число, обещал продолжение) Давай жги. Опиши работу с flash через сниппеты. И если знаешь как сертификаты подделывать и отправлять на сервак.
 

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
723
Баллы
93
ТС уже 25 число, обещал продолжение) Давай жги. Опиши работу с flash через сниппеты. И если знаешь как сертификаты подделывать и отправлять на сервак.
Ого, у нас гость с другой планеты o_O (вроде как 23 число...)
24 числа я только буду дописывать вторую часть (увы и ах.. но и так работа встала на 2 дня, пока писал первую часть).
Чтобы сэкономить время, скорее всего большую часть перенесу в видео-формат. И сделаю обзор post/get запросов (как снифать ) тоже в видео формате (многие просили).

P.S сам бы подался в ученики, кто хорошо умеет работать с флеш :ap:
 
  • Спасибо
Реакции: Знайка

speaker

Client
Регистрация
13.10.2012
Сообщения
298
Благодарностей
43
Баллы
28
И сделаю обзор post/get запросов (как снифать ) тоже в видео формате (многие просили).

Да да просветится бы не мешало.
 

Botin

Client
Регистрация
16.02.2014
Сообщения
357
Благодарностей
743
Баллы
93
24 числа я только буду дописывать вторую часть (увы и ах.. но и так работа встала на 2 дня, пока писал первую часть).
Чтобы сэкономить время, скорее всего большую часть перенесу в видео-формат. И сделаю обзор post/get запросов (как снифать ) тоже в видео формате (многие просили).
Ждем, тогда и проголосую :-)
Посмотрим, как на этот раз будет.
А то в прошлый - обещания так и остались обещаниями :bn:
 
  • Спасибо
Реакции: AlisaZ

lexone

Client
Регистрация
12.10.2012
Сообщения
420
Благодарностей
723
Баллы
93
Ждем, тогда и проголосую :-)
Посмотрим, как на этот раз будет.
А то в прошлый - обещания так и остались обещаниями :bn:
Я тогда объяснил тебе в личке, из-за чего не смог выложить шаб по ютубу (вначале они поменяли формат api, потом были жуткие баны за автоматизированную заливку).
Спс скажи теме на складчике по ютубу (.. они все убили :am: [софт по массовой заливке видео-дорвеев]

Ну а продолжение будет 100% .. покрайне мере за а-парсер точно (давно обещал форбу, обзор его софта с технической стороны).
 
Последнее редактирование:
  • Спасибо
Реакции: Знайка

Botin

Client
Регистрация
16.02.2014
Сообщения
357
Благодарностей
743
Баллы
93
Я тогда объяснил тебе в личке, из-за чего не смог выложить шаб по ютубу
lexone: "На днях допишу уже . Мой старый api ключ просто блокнули.. (на днях скинут прогу, ее отснифаю и ключ возьму.. + возможно аннотации там можно будет вставлять)."
(последний ответ)

Так и не дождался, даже ответа на последующие вопросы по процессу.
 
  • Спасибо
Реакции: AlisaZ

Voldemar

Client
Регистрация
13.04.2014
Сообщения
455
Благодарностей
51
Баллы
28
ТС уже 25 число, обещал продолжение) Давай жги. Опиши работу с flash через сниппеты. И если знаешь как сертификаты подделывать и отправлять на сервак.
сегодня вроде как 24......
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)