Мяу, товарищи! Лето подходит к концу, а у нас все только начинается! 12 лет, как мне кажется, вполне себе повод, чтобы сделать что-то мощное, важное, неожиданное, в общем, чтобы всем поплохело. Например, дизайн сайта сменить. Добро пожаловать на наш ежегодный Конкурс "Поздравь Кота по-человечески2017!"! Конкурс проводится в честь моего Дня рождения, как вы уже наверное поняли. И в этом году мне исполняется 12 лет. Возраст для кота вполне приличный, кстати. Но не смотря на внушительные цифры, ощущаю я себя до сих пор слегка подросшим котенком. Ну да хватит лирики - её в миску не положишь и лоток не наполнишь. А вот кто нам помогает с мисками, я сейчас и расскажу, кстати.
Генеральный спонсор нашего Конкурса - компания ПРИСТ. Очень признателен чувакам из ПРИСТа за наше длительное сотрудничество: вот уже много лет, они предоставляют отличные призы для наших участников. Да и вообще, они клевые и на священников совсем не похожи Еще один старожил Конкурса - компания МАСТЕРКИТ - ваше творческие позывы они могут облечь во вполне материальную форму. Если хочется "что-нибудь сделать, но что - непонятно", зайдите к ним, наверняка набредете на что-то интересное. Интернет-магазин COMPACTtool пока еще нельзя назвать старожилом, но и новичком на нашем Конкурсе он тоже не является. Куча разнообразных нужных, а подчас забавных штуковин у них на сайте - есть из чего выбрать. Интернет-магазин TIXER.RU - наши давние друзья, коллеги, партнеры, собутыльники. Электронные компоненты, модули и куча всякой электронной всячины. Лаборатория РадиоКОТструктор - электронные наборы для самостоятельной сборки. Купил-собрал-заработало - с их наборами так всегда. Спасибо вам всем за поддержку и понимание мохнатой души нашего сообщества.
Ну и давайте же наконец посмотрим, что получат наши призеры - призы, товарищи! Автор работы, занявшей 1-е место получит вполне традиционный приз - цифровой осциллограф, а именно: MDO-72072EG - осциллограф-анализатор спектра. Оторви-хвост-машина! Уже завидую тому счастливчику, который через пару месяцев будет нежно сжимать его в своих лапах.
Автор работы, занявшей 2-е место получит, как это ни странно, тоже осциллограф: АКИП-72206B - USB-осциллограф, компактный, но с шерстью у него все в порядке.
Автор работы, взобравшейся на третье место получит совершенно универсальную вещь: мультиметр HT Italia FLASHMETER - в хозяйстве нет более полезной штуки, чем мультиметр, это вам любой кот скажет.
А теперь, дражайшие товарищи, перейдем к огроменной куче поощрительных призов. Как обычно, номинации, за которые будут выдаваться эти призы будут определены в конце Конкурса, в том числе, будут учитываться и ваши предложения. Всегда можно зайти в эту тему и сказать: "Предлагаю выдать мешок макарон и кувалду в номинации "Мы от него балдеем!" автору статьи "Как я собирал черешню с помощью микроконтроллера"". И есть большая вероятность, что так и произойдет.
Итак, призы от компании МАСТЕРКИТ: BM2114dsp - DSP процессор для цифровой обработки звука на базе ADAU1701. Такого вы в Китае не найдете, эксклюзивная штука, специально для вас.
MP8030R - Встраиваемое термореле с лицевой панелью 2 кВт, 10А. Хозяйке на заметку.
А теперь призы от интернет-магазина COMPACTtool: NanoPi 2 на базе 4х-ядерного процессора SAMSUNG Cortex-A9. ОЗУ: 1 Гб DDR3 Встроены Wi-Fi и Bluetooth Загрузка Android или Linux с флеш-карты Встроенные HDMI и LCD интерфейсы Полностью совместим с Raspberry PI портами GPIO и Arduino.
Джойстик Esplora в количестве 3 штук. Оптом, как известно - дешевле. С датчиком освещения и температуры, микрофоном и гироскопом.С возможностью поддержки LCD. Позволяет управлять устройствами во всех направлениях. Поддержка SPI. Процессор: ATmega32U4 flash: 32 KB EEPROM: 1 KB Питание: 5В
LilyPad модуль с контроллером 328 ATmega328P - 2 штуки LilyPad модуль основной с контроллером 328 ATmega328P. Питание: 2,7-5,5 В Входы/выходы: 20 шт Флеш.: 16 Кб ОЗУ: 1 Кб. Работает с ПО Arduino Размеры: 50х4,5 мм
LilyPad модуль с контроллером ATmega32U4 и USB в количестве 2 штук. Разъем JST для подключения аккумулятора. Питание: 3,8-5 В Входы/выходы: 13 Флеш: 32 Кб SRAM: 2.5 Кб EEPROM: 1 Кб Тактовая частота: 8 МГц Размеры: 50*6,5 мм
Не устали еще читать? Крепитесь, осталось чуток.
Приз от магазина TIXER.RU: Обучающий набор Arduino. Орешек знания тверд, как известно. Но расколоть его таки можно.
Приз от лаборатории РадиоКОТструктор: РК-А01, Набор для сборки оконечного усилителя, мощностью 100Вт. Орет страшно, громче, чем мартовский кот.
Фу, вроде все, с призами покончено! Хотя, не исключены сюрпризы, разумеется. Теперь о том, что вы должны сделать, чтобы получить что-то из всего этого великолепия.
В период с 21 августа по 21 сентября вы должны придумать конструкцию (электронную, понятное дело), написать о ней статью в нашем КотоРеде и отправить её мне. И не забудьте поставить галочку - Я участвую в конкурсе "Поздравь Кота по-человечески 2017!". Статьи будут публиковаться по мере их поступления, раз в сутки, за исключением выходных дней. Товарищи, не нужно присылать статьи раньше или позже указанных сроков - они не попадут на Конкурс. С 23 сентября начнется самая веселая часть меропринятия - общенародное голосование за присланные статьи. Голосование закончится 29 сентября. И, ура, 1 октября мы объявим всех победителей и призеров нашего Конкурса. Ограничения? Никаких. Тематика конструкций может быть любая - от автоматического летающего тапка для любимого кота до самогонного самовара с USB. Количество статей от одного автора может быть совершенно любым. Но из трех главных призов, он сможет получить только один. Невозможно быть одновременно на первом и третьем месте, например - что-нибудь может треснуть и отвалиться. Мы же не хотим несчастных случаев на производстве.
Собственно, вот и все условия - чертовски просто, правда ведь? Но если вдруг вам что-то непонятно и вы что-то хотите спросить - не стесняйтесь, задавайте вопросы в этой самой теме.
Карма: 22
Рейтинг сообщений: 88
Зарегистрирован: Чт мар 26, 2009 04:35:04 Сообщений: 2784 Откуда: Москва
Рейтинг сообщения:0
Я в день рожденья не устану Желать вам сливки и сметану! Мышей потолще и нирвану После обеда на диване! (с) моё (у меня тоже в среду был день рождения и кот я ещё тот )
_________________ (Аль Котоне,кот ещё тот,Cattus Sapiens) Усы и хвост - мои документы. Кот - авторитет! Скажет "Мяу!" - не поспоришь. (скажи мне "мяу" и я скажу кто ты)
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Но в правилах нет такого запрета! (Разработка моя). Хотелось бы услышать ответ от официальных лиц. _____ Вызывает сомнение - Что хорошего можно срочно придумать за месяц, сделать и испытать? Тогда, либо участники, будующие призёры, были за ранее предупреждены о конкурсе, либо нужно все свои разработки держать в секрете и никогда не делиться ими на форуме. Что из этого правильно? Как поступать в дальнейшем?
Если статья не публиковалась в разделах сайта, а была представлена только на форуме, то - да, можно. Оформляйте её обычным образом в КотоРеде и не забудьте поставить конкурсную галку.
Прошу внести небольшую корректировку в голосование по конкурсу: дать возможность ставить 0 баллов. То есть чтобы количество голосов по проекту росло, а балл мог не расти. Можно сделать это по умолчанию, чтобы минимум телодвижений требовался.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
О начале голосования будет сообщено на главной странице сайта. http://radiokot.ru/ Там же будет ссылка, где голосовать. Вероятно голосование начнется завтра.
Для более удобного отображения результатов написал скрипт, сортирующий по среднему баллу и автоматически обновляющий результаты. За основу взял скрипт отсюда: viewtopic.php?f=19&t=94881 . Собственно, вот: Спойлер
Код:
javascript:(function(){ var updateTimeout = 5000;
if(window.location.href !== 'http://radiokot.ru/konkursCatDay2017/') { alert('Вы не на странице конкурса!'); return; }
var div = document.getElementById("hypercontext"); var table = div.firstElementChild.children[2]; var tableBody = table.tBodies[0];
var p = document.createElement("p"); p.className = "usual"; div.firstElementChild.insertBefore(p, div.firstElementChild.children[1]);
var label = document.createTextNode("Интервал автоматического обновления:");
var timeout = document.createElement("input"); timeout.type = "text"; timeout.defaultValue = "5000";
function readTimeout(){ var inp = timeout.value; var re = new RegExp('^[0-9]+$'); if((!re.test(inp)) || (Number(inp) < 1000) || (Number(inp) > 60000)){ alert("Введите целое число от 1000 до 60000!"); return; } updateTimeout = Number(inp); }
var timer; function sortTable(){ function compare(a,b) { if (a.mark < b.mark) return 1; if (a.mark > b.mark) return -1; return 0; }
function article(row) { this.row = row; var votes = row.lastElementChild.innerText; var re = new RegExp('[0-9]+.?[0-9]?', 'g'); var total = re.exec(votes); var totalVotes = re.exec(votes); this.mark = total/totalVotes };
function articleList() { this.articles = new Array();
this.AddArticle = function(row) { this.articles[this.articles.length] = new article(row); }; }
nowUpdating.textContent = "Обновление...";
var newPage = document.createElement("div"); $.get('/konkursCatDay2017',function(data){ newPage.innerHTML = data;
var newTable = newPage.getElementsByTagName("table")[2]; var newTableBody = newTable.tBodies[0];
var articles = new articleList();
for (var i = 0, row; row = newTable.rows[i]; i++) { articles.AddArticle(row); }
articles.articles.sort(compare);
while(table.rows.length > 0) table.deleteRow(0);
for(var i = 0, art; art = articles.articles[i]; i++){ var counter = document.createElement("td"); counter.innerText = i + 1; art.row.insertBefore(counter,art.row.firstElementChild); table.appendChild(art.row); } nowUpdating.textContent = ""; if(enableUpdate.checked) timer = setTimeout(sortTable, updateTimeout); }); }; timer = setTimeout(sortTable,0); })();
Это нужно скопировать и вставить в адресную строку браузера на странице с результатами, после чего нажать Enter. Некоторые браузеры (например, Chrome) обрезают "javascript:" в начале, в этом случае нужно дописать это вручную.
По вопросам работы скрипта (ошибки, баги, ...) - лучше в ЛС.
Добавлено after 5 hours 9 minutes 4 seconds: Сделал вывод графиков изменений для первых 10 мест. Цвета графиков соответствуют цветам названий статей в таблице. Спойлер
Код:
javascript:(function(){
var smoothieCharts = document.createElement("script"); smoothieCharts.type = "text/javascript"; smoothieCharts.src = "http://smoothiecharts.org/smoothie.js";
var style = document.createElement("style"); style.type = "text/css";
smoothieCharts.onload = (function(){ var updateTimeout = 5000;
if(window.location.href !== 'http://radiokot.ru/konkursCatDay2017/') { alert('Вы не на странице конкурса!'); return; }
var div = document.getElementById("hypercontext"); var table = div.firstElementChild.children[2]; var tableBody = table.tBodies[0];
var p = document.createElement("p"); p.className = "usual"; div.firstElementChild.insertBefore(p, div.firstElementChild.children[1]);
var label = document.createTextNode("Интервал автоматического обновления:");
var timeout = document.createElement("input"); timeout.type = "text"; timeout.defaultValue = "5000";
function readTimeout(){ var inp = timeout.value; var re = new RegExp('^[0-9]+$'); if((!re.test(inp)) || (Number(inp) < 1000) || (Number(inp) > 60000)){ alert("Введите целое число от 1000 до 60000!"); return; } updateTimeout = Number(inp); }
p.appendChild(document.createTextNode("Длина оси времени графика:")); p.appendChild(document.createElement("br")); p.appendChild(graphLength); p.appendChild(document.createTextNode(" мин ")); p.appendChild(setGraphLength); p.appendChild(document.createElement("br"));
var firstRun = true; readTimeout(); readGraphLength();
var timer; function sortTable(){ function compare(a,b) { if (a.mark < b.mark) return 1; if (a.mark > b.mark) return -1; return 0; }
function article(row) { this.row = row; this.name = row.firstElementChild.firstElementChild.innerText; var re = new RegExp("[0-9]{2}$"); this.ind = Number(re.exec(row.firstElementChild.firstElementChild.href)) - 1; var votes = row.lastElementChild.innerText; re = new RegExp('[0-9]+.?[0-9]?', 'g'); var total = re.exec(votes); var totalVotes = re.exec(votes); this.mark = total/totalVotes };
function articleList() { this.articles = new Array();
this.AddArticle = function(row) { this.articles[this.articles.length] = new article(row); }; }
nowUpdating.textContent = "Обновление...";
var newPage = document.createElement("div"); $.get('/konkursCatDay2017',function(data){ newPage.innerHTML = data;
var newTable = newPage.getElementsByTagName("table")[2]; var newTableBody = newTable.tBodies[0];
var articles = new articleList();
function setVisible(index){ graph.seriesSet[index].options.strokeStyle = colors[artPlaces[index]]; } function setInvisible(index){ graph.seriesSet[index].options.strokeStyle = "none"; }
for (var i = 0, row; row = newTable.rows[i]; i++) { articles.AddArticle(row); var art = articles.articles[articles.articles.length - 1]; if(firstRun){ graphLines[art.ind] = new TimeSeries(); artList[art.ind] = art; artNames[art.ind] = art.name; } graphLines[art.ind].append(new Date().getTime(), art.mark); } if(firstRun){ for(var i = 0; i < graphLines.length; i++) graph.addTimeSeries(graphLines[i], {lineWidth: 2}); }
articles.articles.sort(compare);
while(table.rows.length > 0) table.deleteRow(0);
for(var i = 0, art; art = articles.articles[i]; i++){ var counter = document.createElement("td"); counter.innerText = i + 1; art.row.insertBefore(counter,art.row.firstElementChild); table.appendChild(art.row); if(artPlaces[art.ind] < 10){ art.row.children[1].firstElementChild.style.color = colors[artPlaces[art.ind]]; art.row.children[1].style.backgroundColor = "black"; } artPlaces[art.ind] = i; }
for(var i = 0; i < artPlaces.length; i++){ if(artPlaces[i] < 10) setVisible(i); else setInvisible(i); }
P.S. Сделал отображение таблички со значениями в данный момент времени при наведении курсора, улучшил выбор верхней и нижней границ отображения. Теперь используется вся площадь графика, а не только верхняя половина. Спойлер
smoothieCharts.onload = (function(){ var updateTimeout = 5000;
if(window.location.href !== 'http://radiokot.ru/konkursCatDay2017/') { alert('Вы не на странице конкурса!'); return; } /******************Переопределяем некоторые методы для нашего случая*************************/ var Util = { extend: function() { arguments[0] = arguments[0] || {}; for (var i = 1; i < arguments.length; i++) { for (var key in arguments[i]) { if (arguments[i].hasOwnProperty(key)) { if (typeof(arguments[i][key]) === 'object') { if (arguments[i][key] instanceof Array) { arguments[0][key] = arguments[i][key]; } else { arguments[0][key] = Util.extend(arguments[0][key], arguments[i][key]); } } else { arguments[0][key] = arguments[i][key]; } } } } return arguments[0]; }, binarySearch: function(data, value) { var low = 0, high = data.length; while (low < high) { var mid = (low + high) >> 1; if (value < data[mid][0]) high = mid; else low = mid + 1; } return low; } };
SmoothieChart.prototype.updateTooltip = function () { var el = this.getTooltipEl();
if (!this.mouseover || !this.options.tooltip) { el.style.display = 'none'; return; }
var time = this.lastRenderTimeMillis - (this.delay || 0);
time -= time % this.options.millisPerPixel;
var t = this.options.scrollBackwards ? time - this.mouseX * this.options.millisPerPixel : time - (this.canvas.offsetWidth - this.mouseX) * this.options.millisPerPixel;
var data = [];
for (var d = 0; d < this.seriesSet.length; d++) { var timeSeries = this.seriesSet[d].timeSeries, closeIdx = Util.binarySearch(timeSeries.data, t); if(this.seriesSet[d].options.strokeStyle === "rgba(0,0,0,0.0)") continue; if (closeIdx > 0 && closeIdx < timeSeries.data.length) { data.push({ series: this.seriesSet[d], index: closeIdx, value: timeSeries.data[closeIdx][1] }); } }
var div = document.getElementById("hypercontext"); var table = div.firstElementChild.children[2]; var tableBody = table.tBodies[0];
var p = document.createElement("p"); p.className = "usual"; div.firstElementChild.insertBefore(p, div.firstElementChild.children[1]);
var label = document.createTextNode("Интервал автоматического обновления:");
var timeout = document.createElement("input"); timeout.type = "text"; timeout.defaultValue = "5000";
function readTimeout(){ var inp = timeout.value; var re = new RegExp('^[0-9]+$'); if((!re.test(inp)) || (Number(inp) < 1000) || (Number(inp) > 60000)){ alert("Введите целое число от 1000 до 60000!"); return; } updateTimeout = Number(inp); }
p.appendChild(document.createTextNode("Длина оси времени графика:")); p.appendChild(document.createElement("br")); p.appendChild(graphLength); p.appendChild(document.createTextNode(" мин ")); p.appendChild(setGraphLength); p.appendChild(document.createElement("br"));
var firstRun = true; readTimeout(); readGraphLength();
var timer; function sortTable(){ function compare(a,b) { if (a.mark < b.mark) return 1; if (a.mark > b.mark) return -1; return 0; }
function article(row) { this.row = row; this.name = row.firstElementChild.firstElementChild.innerText; var re = new RegExp("[0-9]{2}$"); this.ind = Number(re.exec(row.firstElementChild.firstElementChild.href)) - 1; var votes = row.lastElementChild.innerText; re = new RegExp('[0-9]+.?[0-9]?', 'g'); var total = re.exec(votes); var totalVotes = re.exec(votes); this.mark = total/totalVotes };
function articleList() { this.articles = new Array();
this.AddArticle = function(row) { this.articles[this.articles.length] = new article(row); }; }
nowUpdating.textContent = "Обновление...";
var newPage = document.createElement("div");
var get; if(!$.get){ get = function(url,callback){ var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); xhr.onreadystatechange = function(){ if (this.readyState != 4) return; callback(this.responseText); return; }; xhr.send(); }; } else get = $.get; get('/konkursCatDay2017',function(data){ newPage.innerHTML = data;
var newTable = newPage.getElementsByTagName("table")[2]; var newTableBody = newTable.tBodies[0];
var articles = new articleList();
function setVisible(index){ graph.seriesSet[index].options.strokeStyle = colors[artPlaces[index]]; } function setInvisible(index){ graph.seriesSet[index].options.strokeStyle = "rgba(0,0,0,0.0)"; }
for (var i = 0, row; row = newTable.rows[i]; i++) { articles.AddArticle(row); var art = articles.articles[articles.articles.length - 1]; if(firstRun){ graphLines[art.ind] = new TimeSeries(); artList[art.ind] = art; artNames[art.ind] = art.name; } graphLines[art.ind].append(new Date().getTime(), art.mark); } if(firstRun){ for(var i = 0; i < graphLines.length; i++) graph.addTimeSeries(graphLines[i], {lineWidth: 2}); }
articles.articles.sort(compare);
while(table.rows.length > 0) table.deleteRow(0);
for(var i = 0, art; art = articles.articles[i]; i++){ var counter = document.createElement("td"); counter.innerText = i + 1; art.row.insertBefore(counter,art.row.firstElementChild); table.appendChild(art.row); if(artPlaces[art.ind] < 10){ art.row.children[1].firstElementChild.style.color = colors[artPlaces[art.ind]]; art.row.children[1].style.backgroundColor = "black"; } artPlaces[art.ind] = i; }
for(var i = 0; i < artPlaces.length; i++){ if(artPlaces[i] < 10) setVisible(i); else setInvisible(i); }
P.P.S. Добавил в код выше (тот, что с графиком) поддержку старого браузера Opera (не на основе Хрома).
_________________ Этот пост оказался полезен? Не поленись, нажми слева! Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Последний раз редактировалось *Trigger* Вт сен 26, 2017 17:16:49, всего редактировалось 3 раз(а).
и куда это надо загружать? это типа для админов прожка?
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Я же написал: вставить в адресную строку браузера, в котором открыта страница с результатами.
_________________ Этот пост оказался полезен? Не поленись, нажми слева! Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
_________________ Этот пост оказался полезен? Не поленись, нажми слева! Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения