Вече горе-долу почнах да разбирам идеята на блоговете, но не съм убеден в нуждата от тях. Както и да е, моят блог е създаден на 23 Септември 2007г.
четвъртък, 15 февруари 2018 г.
сряда, 7 февруари 2018 г.
Increase the maximum frequency of inverter iG5A
Sometimes it is confusing when you try to increase the maximum frequency.
Normally when you setup the frequency with the keypad, it is needed just to increase F21 to the desired Hz value.
But when you use a potentiometer you have to increase also the max frequency corresponding to the max voltage of the potentiometer.
This is done by parameter I10.
So, firstly you put F21 to the desired frequency
Then you put I10 to the corresponding frequency when the potentiometer gives max voltage (mostly 10V).
Normally when you setup the frequency with the keypad, it is needed just to increase F21 to the desired Hz value.
But when you use a potentiometer you have to increase also the max frequency corresponding to the max voltage of the potentiometer.
This is done by parameter I10.
So, firstly you put F21 to the desired frequency
Then you put I10 to the corresponding frequency when the potentiometer gives max voltage (mostly 10V).
понеделник, 5 февруари 2018 г.
Сортиране на таблица в Joomla с Data Tables
{source}
<!-- Сортиране на таблицата -->
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/dataTables.bootstrap.min.js"></script>
<!-- Сортиране на таблицата -->
<!-- Допълнителни настройки на таблицата -->
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$('#example').DataTable(
{
"pageLength": 2000,
"language": {
"lengthMenu": "Покажи само _MENU_ реда на всяка страница",
"zeroRecords": "Свържете се с наш сътрудник за повече информация",
"info": "Страница № _PAGE_ от общо _PAGES_",
"infoEmpty": "Свържете се с наш сътрудник за повече информация",
"infoFiltered": "(филтрирано от списък с _MAX_ ел. двигателя)",
"search": "Търси "
}
}
);
} );
</script>
<!-- Допълнителни настройки на таблицата -->
<?php
echo '
<table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%">
<thead>
<tr>
<th>Производител</th>
<th>Мощност</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Производител</th>
<th>Мощност</th>
</tr>
</tfoot>
<tbody><tr><td></td></tr></tbody></table>';
?>
{/source}
неделя, 28 януари 2018 г.
10 правила за водене на преговори и как да вземем максимума
Без да предполагате, Разликата между успеха и провала в днешния сложен свят, се крие в способността за успешно преговаряне. Ето нашите 10 съвета за успешно преговаряне, актуални през 2018 година:
- НЕ СЕ СТРАХУВАЙ ДА НАЗОВЕШ ТОВА, КОЕТО ИСКАШУспешните преговарящи са самоуверени, асертивни* и биха "предизвикали" и повдигнали всяка тема - те знаят, че всичко в този свят е въпрос на договаряне. Можем да наречем този начин на мислене "преговарящо съзнание". Преговарящото съзнание е това, което прави разлика между Истински Можещите Преговарящи и всички останали хора.
Да отстояваш позициите си означава да попиташ за това, което искаш и да не приемаш "НЕ" за отговор.
Много важно в случая е да изразявате мислите си, без гняв, злоба или тревофа. Накарайте хората да разберат какво искате, без да се чувстват заплашени от това. Опитайте да използвате изявленията тип "Аз".
Например, вместо да кажете: "Не трябва да правите това", опитайте да замените с "Не се чувствам комфортно, когато правите това".
Вземете предвид, че съществува разлика между това да бъдеш агресивен и да бъдеш асертивен. Човек е асертивен, когато се грижиш за собствените си интереси, но същевременно запазваш уважението към интересите на другите хора.
Когато виждаш само своите интереси, без да обръщаш внимание на интересите на другите хора - тогава си агресивен.
"Да предизвикваш" означава да не приемаш всичко което чуеш за окончателно или за "чиста монета". Човек трябва да мисли за себе си и да може да изгражда собствено тълкуване на нещата, дори това тълкуване да е обратното на това, което му се казва.
Като елементарен пример може да се даде правото да попиташ за цената на "тази нова кола" или да не вярваш на всичко което прочетеш във вестника или чувеш по bTV.
Не можеш да водиш преговори, ако нямаш куража да оспориш вярността на отсрещната страна! - МЛЪКНИ И СЛУШАЙ
Изумително е каква част от хората, които срещаме, просто не могат да спрат да говорят!
Истински Успешните Преговарящи са детективи, те пускат сондиращи въпроси и млъкват. Тогава отстрещаната страна ще си каже всичко, което трябва да знаете. От Вас се иска само да слушате.
Огромна част от конфликтите могат да бъдат лесно разрешени и избегнати, ако можехме да слушаме.
Хитрината е в това, че сме забравили старата поговорка, че имаме 2 уши и 1 уста. ПРосто трябва да слушаме.
Толкова сме обладани от това да накараме другите да ни чуят, че просто забравяме да слушаме.
Има старо правило на успешната комуникация наречено 70/30 - да слушаш през 70% от времето и да говориш през не повече от 30% от разговора.
Ще станете ефективен слушател едва когато позволите на другия човек да води по-голяма част от разговора. Насърчете другия "преговарящ" да говори, като задавате въпроси, на които не може да се отговори с просто "да" или "не", т.нар. въпроси с отворен край. - НАПИШИ СИ ДОМАШНАТА
Това друго нещо, което детективите правят - съберете колкото се може повече полезна информация, преди да започнете преговорите.
Какви са техните нужди?
Какво ги напряга и притиска?
Какви опции и варианти стоят пред тях?
Да си "напишеш домашната" е жизнено важно за успешното договаряне. Не може да вземете правилни и точни решения, ако не знаете каква е другата страна и гледна точка.
Колкото повече информация имате за отсрещната страна в преговорите - толкова по-силни ще бъдете.
Хората, които не успяват да извлекат максимума от преговорите, най-вероятно "не са си написали домашната работа". - ВИНАГИ БЪДИ ГОТОВ ДА СТАНЕШ И ДА СИ ТРЪГНЕШ
С други думи - никога не преговаряйте, ако имате само 1 вариант.
Ако зависиш твърде много от положителния резултат на преговорите, губите варианта да отговорите с "НЕ".
Когато сте уверен в себе си и мислено си кажете "Ще си тръгна, ако не мога да сключа задоволителна сделка", другата страна ще разбере, че си има работа със сериозен преговарящ.
Вашата решимост ще ги принуди да направят отстъпки.
Ако може да се даде един единствен съвет за водене на преговори, без колебание това е - винаги бъди готов да се откажеш от преговорите.
Не го разбирайте погрешно! Не ви съветваме да се отказвате лесно и да си тръгвате, но ако дори не обмисляте възможността да се оттеглите от преговорите, просто ще се подхлъзнете към целта на другата страна и ще изпълните нейните искания.
Ако не сте отчаяни и осъзнаете, че имате и други възможности - отсрещния преговарящ ще усети вашата вътрешна сила. - НЕ БЪРЗАЙ!
Да бъдеш търпелив е много трудно за Българите и за балканския ни нрав по принцип. Този манталитет няма място в преговорите!
Ако някога сте водили преговори в някоя държава, която не е на Балканите, ще знаете, че хората в тези държави гледат по друг начин на времето, особено в Азия или Близкия Изток. Те знаят, че ако бързате е много по-вероятно да допуснете грешки и да не извлечеш максимума.
Страната в преговорите, която е по-гъвката и не бърза, има огромно предимство пред другата страна.
Вашето търпение може да "побърка" другия преговарящ, ако той бърза, защото може да помисли, че не сте под натиск да сключите сделката. И какво ще направи? Ще направят отстъпки, само и само да Ви накарат да кажете "ДА". - ОЧАКВАЙ НАЙ-ДОБРИЯ ИЗХОД ОТ ПРЕГОВОРИТЕ
Успешните преговарящи са оптимисти! Ако очакваш повече - взимаш повече. Доказана стратегия е, че за да получиш най-добрия резултат трябва да имаш "прекалени", дори екстремни очаквания.
Продавачът трябва да поиска повече от колкото иска, а купувачът трябва да предложи по-малко, отколкото е готов да плати. Хората, които се целят нависоко, постигат по-добри резултати.
Твоят оптимизъм ще се превърне в самоизпълняващо се пророчество. И обратното, ако имате ниски очаквания, вероятно ще приключите с по-лош резултат. - ФОКУСИРАЙ СЕ ВЪРХУ ПРИТЕСНЕНИЯТА НА ДРУГАТА СТРАНА, А НЕ ВЪРХУ ТВОИТЕ
Естествената реакция е да се фокусираме върху нашите притеснения, напрежение и проблеми. т.е. върху нашите причини да искаме тази сделка.
"Тревата в двора на комшията винаги изглежда по-хубава и по-зелена, дори и да не е така."
Ако попаднете в този капан, действате срещу себе си и отсрещната страна ще изглежда по-силна.
Ако се фокусираш върху собствените си проблеми и ограничения, изпускаш общата картина.
Затова Истински Успешните Преговарящи се питат:
"Какви са притесненията на другата страна?"
"Какви са техните рискове?"
"Какви са техните срокове и напрежения?"
Ще се почуствате много по-силни, когато установите и разпознаете причините, поради които другата страна иска сделката.
Вашата сила в преговорите зависи до голяма степен от напрежението върху другата страна.
Дори и да изглежда, че не им пука, те със сигурност имат свои пристеснения и проблеми. Твоята работа е да бъдеш детектив и да ги извадиш на яве.
Ако откриете, че те са под напрежение (а те със сигурност са!), потърси начини да се възползваш от това напрежение, за да постигнеш по-добър резултат за себе си. - ПОКАЖЕТЕ КАК ЩЕ БЪДАТ УДОВЛЕТВОРЕНИ НУЖДИТЕ ИМ
Истински Успешните Преговарящи винаги гледат на ситуацията и от отсрещната страна. Всеки вижда света по различен начин, така че ще бъдете с едни гърди напред, ако може да разберете как те възприемат сделката.
Вместо да се опитвате на всяка цена да спечелите сделката, потърсете начин да разберете другия и потърсете начин той да се почувства удовлетворен.
"Едната ръка мие другата"
Ако успеете да помогнете на другата страна да бъде удовлетворена, те ще бъдат по-склонни да ви помогнат вие също да сте удовлетворени. Това не означава да се предадете и да приемете всичките им искания.
Удовлетвореност означава, че основните им интереси са изпълнени, а не че всички искания и претенции са приети. Не бъркайте основните интереси с исканията и претенциите.
Исканията и претенциите са това, което казват, че искат. Основните им цели и интереси са това, което наистина имат нужда да получат. - НЕ ДАВАЙ НИЩО, БЕЗ ДА ПОЛУЧИШ НЕЩО В ЗАМЯНА
Едностранните отстъпки са самоунищожителни. Всеки път, когато дадете нещо, вземете нещо в замяна. Винаги следвайте алгоритъма: "Ще направя това, ако вие направите онова.". В противен случай, сами ще подкатните другия да иска още нещо.
Ако направите някакъв компромис, без да поискате същото от отсрещната страна, те ще почувстват, че са били в правото си да поискат отстъпката и няма да се задоволят докато не получат дори още повече.
Ако на отсрещната страна се налага ДА СПЕЧЕЛИ ОТСТЪПКАТА, тя ще изпита по-голямо чувство на удовлетворение, отколкото ако получи отстъпката без нищо. - НЕ ПРИЕМАЙ ЛИЧНО ВЪПРОСИТЕ ИЛИ ПОВЕДЕНИЕТО НА ДРУГИЯПрекалено често преговорите се провалят, защото някоя от двете страни се отклонява с лични проблеми или чувства, които не са свързани със сделката. Истински Успешните Преговарящи са съсредоточени върху решаването на проблема, а именно:
"Как можем да сключим споразумение, което да зачита нуждите и на двете страни?"
Обсебването от личността на другия или от странични фактори, които не са пряко свързани, може да саботира преговорите. Ако някой е груб или труден за работа, опитайте се да разберете поведението им и не го приемайте лично.
асертивен* - Терминът е широко разпространен в западната психология и произхожда от английската дума assert, която значи заявявам, утвърждавам, доказвам. Човек се държи като асертивен, когато отстоява себе си, изразява истинските си чувства и не позволява на другите хора да се възползват от него. В същото време зачита чувствата на другите. Ако човек е асертивен, може да защити по най-добрия начин интересите си.
петък, 26 януари 2018 г.
Свързване към база данни на Joomla - към друга и към тази на нейната си инсталация
<?php $option = array(); //prevent problems $option['driver'] = 'mysql'; // Database driver name $option['host'] = 'localhost'; // Database host name $option['user'] = 'потребителското име'; // User for database authentication $option['password'] = 'паролата'; // Password for database authentication $option['database'] = 'името на базата'; // Database name $option['prefix'] = ''; // Database prefix (may be empty) $db = JDatabaseDriver::getInstance( $option ); $query = $db->getQuery(true);
$query->select(array('*'))
->from($db->quoteName('името на таблицата'))
->where($db->quoteName('manufacturer') . ' IS NOT NULL')
->OR($db->quoteName('type') . ' IS NOT NULL');
->from($db->quoteName('името на таблицата'))
->where($db->quoteName('manufacturer') . ' IS NOT NULL')
->OR($db->quoteName('type') . ' IS NOT NULL');
$query->order('manufacturer ASC');
$db->setQuery($query);
$results = $db->loadObjectList();
echo '<table class="table table-striped">';
echo '<tr><th>ПРОИЗВОДИТЕЛ</th><th>ТИП</th><th>МОЩНОСТ</th><th>ОБОРОТИ</th></tr>';
foreach ($results as $row)
{
{
echo '<tr>';
echo '<td class="first">'. $row->manufacturer .'</td>';
echo '<td>' . $row->type. '.</td>';
echo '<td>' . ($row->power+0) . ' kW</td>';
echo '<td>' . $row->rpm. ' мин.<sup>-1</sup></td>';
echo '</tr>';
echo '<td class="first">'. $row->manufacturer .'</td>';
echo '<td>' . $row->type. '.</td>';
echo '<td>' . ($row->power+0) . ' kW</td>';
echo '<td>' . $row->rpm. ' мин.<sup>-1</sup></td>';
echo '</tr>';
}
echo '</table>';
echo '</table>';
?>
Когато се свързваш към таблиците на базата, в която е инсталирана Joomla, първите редове могат да бъдат замествени с:
$db = JFactory::getDbo();
$query = $db->getQuery(true);
сряда, 24 януари 2018 г.
Google Spreadsheet и Excel полезни функции
Функции
HLOOKUP и VLOOKUP търсят задължително в първия ред/колона=INDEX(F2:F,MATCH(1,(K2=D2:D)*(I2=B2:B)*(J2=C2:C)*(L2=E2:E),0))
Намира точната стойност на клетка, която се намира между F2:F и отговаря на определени условия
=FILTER(A2:F,IF(ISBLANK(K2),1,D2:D=K2)*IF(ISBLANK(I2),1,B2:B=I2)*IF(ISBLANK(J2),1,C2:C=J2)*IF(ISBLANK(L2),1,E2:E=L2))
Изважда целия ред намиращ се между A2:F. Когато се изтрие съдържанието на клетките, филтъра работи. Затова се ползват ISBLANK и IF. Тук съм питал дали може да се направи по-елегантно
=QUERY(A2:F, "SELECT * WHERE (B="&I2&" AND E='"&L2&"')",0)
Извежда всички редове между А2:F, за които B=I2 и E=L2
=query('Form Responses 2'!A1:B, "select * order by A desc", 1)
=QUERY(A3:C," select * where A = "&G3&" AND B ="&H3&" " )
Изважда редовете, в които стойността в колона А=G3 И колона В=Н3
17.11.2019
=SORT('Отговори от формуляр 3'!A2:G;1;FALSE)
Сортира отговорите от 'Отговори от формуляр 3' получени чрез Google forms, между колони А и G, според А
=ArrayFormula(IF(B2:B,$B$2:$B/$C$2:$C,))
Изпълнява формулата след първата запетая, докато има записи в B2:B
=arrayformula('Отговори от формуляр 3'!A1:G1)
Копира в нов sheet полетата между A1 и G1 на 'Отговори от формуляр 3'
=IMPORTXML("http://coinmarketcap.com/currencies/bitcoin/","//span[@class='text-large2']")
Взима стойността на class=text-large2
=RIGHT/или LEFT/ (адреса на клетката ; /или запетая/ *броя на символите, които искаш да вземеш*)
=А1&A2 - комбинира стойностите в двете клетки
Добавени на 1 Юни 2019г.:
=and($E3>now(),NOT(ISBLANK($E3)))
JavaScript
Копиране на форматирането за цялата таблица на Form Responses, включително и за новите отговори
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
sheet.getRange(3, 1, 1, lastColumn).copyFormatToRange(sheet, 1, lastColumn, 3, lastRow);
}
В последния ред на този скрипт 5 означава, че взима форматирането от ред №5 и го прилага в цялата таблица https://webapps.stackexchange.com/questions/91027/how-can-i-retain-cell-formatting-when-data-is-inputted-via-a-form
function onEdit(e) { // Премества ред от една таблица в друга, когато е написано "ГОТОВО" // see https://productforums.google.com/d/topic/docs/ehoCZjFPBao/discussion var sheetNameToWatch = "ЗА ВЗИМАНЕ"; var columnNumberToWatch = 4; // column A = 1, B = 2, etc. var valueToWatch = "ГОТОВО"; var sheetNameToMoveTheRowTo = "ВЗЕТИ"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = SpreadsheetApp.getActiveSheet(); var range = sheet.getActiveCell(); if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) { var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo); var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1); sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange); sheet.deleteRow(range.getRow()); } }
var range2 = e.range; range2.setNote('Последна промяна е направена: ' + new Date()); // Слага коментар с датата, на която е направена промяна
function onEdit(e) { var colToWatch = 7, colToStamp = 13; if (e.range.columnStart !== colToWatch) return; var writeVal = e.value ? new Date().new time() : ''; e.source.getActiveSheet() .getRange(e.range.rowStart, colToStamp) .setValue(writeVal);} //слага дата в колона 13 при промяна в колона 7
събота, 26 август 2017 г.
Check if Bootstrap 2 or 3 is loaded (проверка дали е зареден)
<script type="text/javascript">
var bootstrap3_enabled = (typeof $().emulateTransitionEnd == 'function');
document.write(bootstrap3_enabled);
</script>
сряда, 16 август 2017 г.
sortable сортираща таблица html javascript
https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_sort_table_desc
<!DOCTYPE html>
<html>
<title>Sort a HTML Table Alphabetically</title>
<body>
<p>Click the headers to sort the table.</p>
<p>The first time you click, the sorting direction is ascending (A to Z).</p>
<p>Click again, and the sorting direction will be descending (Z to A):</p>
<table border="1" id="myTable">
<tr>
<!--When a header is clicked, run the sortTable function, with a parameter, 0 for sorting by names, 1 for sorting by country:-->
<th onclick="sortTable(0)">Name</th>
<th onclick="sortTable(1)">Country</th>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>Sweden</td>
</tr>
<tr>
<td>North/South</td>
<td>UK</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Germany</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>Germany</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Italy</td>
</tr>
<tr>
<td>Paris specialites</td>
<td>France</td>
</tr>
<tr>
<td>Island Trading</td>
<td>UK</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Canada</td>
</tr>
</table>
<script>
function sortTable(n) {
var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
table = document.getElementById("myTable");
switching = true;
//Set the sorting direction to ascending:
dir = "asc";
/*Make a loop that will continue until
no switching has been done:*/
while (switching) {
//start by saying: no switching is done:
switching = false;
rows = table.getElementsByTagName("TR");
/*Loop through all table rows (except the
first, which contains table headers):*/
for (i = 1; i < (rows.length - 1); i++) {
//start by saying there should be no switching:
shouldSwitch = false;
/*Get the two elements you want to compare,
one from current row and one from the next:*/
x = rows[i].getElementsByTagName("TD")[n];
y = rows[i + 1].getElementsByTagName("TD")[n];
/*check if the two rows should switch place,
based on the direction, asc or desc:*/
if (dir == "asc") {
if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
//if so, mark as a switch and break the loop:
shouldSwitch= true;
break;
}
} else if (dir == "desc") {
if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
//if so, mark as a switch and break the loop:
shouldSwitch= true;
break;
}
}
}
if (shouldSwitch) {
/*If a switch has been marked, make the switch
and mark that a switch has been done:*/
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
//Each time a switch is done, increase this count by 1:
switchcount ++;
} else {
/*If no switching has been done AND the direction is "asc",
set the direction to "desc" and run the while loop again.*/
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<title>Sort a HTML Table Alphabetically</title>
<body>
<p>Click the headers to sort the table.</p>
<p>The first time you click, the sorting direction is ascending (A to Z).</p>
<p>Click again, and the sorting direction will be descending (Z to A):</p>
<table border="1" id="myTable">
<tr>
<!--When a header is clicked, run the sortTable function, with a parameter, 0 for sorting by names, 1 for sorting by country:-->
<th onclick="sortTable(0)">Name</th>
<th onclick="sortTable(1)">Country</th>
</tr>
<tr>
<td>Berglunds snabbkop</td>
<td>Sweden</td>
</tr>
<tr>
<td>North/South</td>
<td>UK</td>
</tr>
<tr>
<td>Alfreds Futterkiste</td>
<td>Germany</td>
</tr>
<tr>
<td>Koniglich Essen</td>
<td>Germany</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Italy</td>
</tr>
<tr>
<td>Paris specialites</td>
<td>France</td>
</tr>
<tr>
<td>Island Trading</td>
<td>UK</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Canada</td>
</tr>
</table>
<script>
function sortTable(n) {
var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
table = document.getElementById("myTable");
switching = true;
//Set the sorting direction to ascending:
dir = "asc";
/*Make a loop that will continue until
no switching has been done:*/
while (switching) {
//start by saying: no switching is done:
switching = false;
rows = table.getElementsByTagName("TR");
/*Loop through all table rows (except the
first, which contains table headers):*/
for (i = 1; i < (rows.length - 1); i++) {
//start by saying there should be no switching:
shouldSwitch = false;
/*Get the two elements you want to compare,
one from current row and one from the next:*/
x = rows[i].getElementsByTagName("TD")[n];
y = rows[i + 1].getElementsByTagName("TD")[n];
/*check if the two rows should switch place,
based on the direction, asc or desc:*/
if (dir == "asc") {
if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
//if so, mark as a switch and break the loop:
shouldSwitch= true;
break;
}
} else if (dir == "desc") {
if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
//if so, mark as a switch and break the loop:
shouldSwitch= true;
break;
}
}
}
if (shouldSwitch) {
/*If a switch has been marked, make the switch
and mark that a switch has been done:*/
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
//Each time a switch is done, increase this count by 1:
switchcount ++;
} else {
/*If no switching has been done AND the direction is "asc",
set the direction to "desc" and run the while loop again.*/
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}
</script>
</body>
</html>
събота, 6 май 2017 г.
Joomla Position как да добавим позиция
1. Общо взето, в който и да е от файловете намиращи се в директорията /tpls/, трябва да добавите следното:
<!-- моя нова позиция за модул -->
<?php if ($this->countModules('ime-na-nova-poziciya')) : ?>
<div class="span6 <?php $this->_c('ime-na-nova-poziciya')?>">
<jdoc:include type="modules" name="<?php $this->_p('ime-na-nova-poziciya') ?>" style="raw" />
</div>
<?php endif ?>
<!--//моя нова позиция -->
2. В templateDetails.xml, където и да е между другите позиции се добавя
<position>ime-na-nova-poziciya</position>
вторник, 18 април 2017 г.
Точка вместо запетая, при натискане на "Del" бутона от NumPada
Точка вместо запетая при натискане на Del / Decimal бутона от NumPad
Ако при българска клавиатура бутонът Del / Decimal от NumPad пише , вместо ., най-лесното решение през 2026 г. е малък registry remap.
Това решение:
- не иска допълнителна програма
- не пуска скрипт при startup
- работи на системно ниво
Важно: промяната е глобална за всички клавиатурни подредби и изисква рестарт на Windows.
Изтегляне:
- Включване: https://github.com/teodor-cpu/numpad-dot-blog-2026/releases/download/v1.0.0/numpad-decimal-dot-enable.reg
- Връщане назад: https://github.com/teodor-cpu/numpad-dot-blog-2026/releases/download/v1.0.0/numpad-decimal-dot-disable.reg
Как се прави:
1. Свалете numpad-decimal-dot-enable.reg
2. Стартирайте файла с двоен клик.
3. Потвърдете предупреждението на Windows.
4. Рестартирайте компютъра.
След рестарта бутонът Decimal / Del от NumPad ще пише точка.
Ако искате да върнете старото поведение:
1. Свалете numpad-decimal-dot-disable.reg
2. Стартирайте файла.
3. Рестартирайте Windows.
Важно уточнение:
Смяната на decimal separator в Regional settings не решава надеждно проблема при стандартните български Windows keyboard layouts. Там поведението на NumPad Decimal обикновено идва от самата клавиатурна подредба.
Ако искате промяната да важи само за една конкретна българска подредба, тогава трябва custom keyboard layout. За повечето хора обаче .reg вариантът е по-простият и практичен избор.
СТАР МЕДТОД 2017
-----------------------------------------------------------
- Трябва да се инсталира Microsoft Keyboard Layout Creator
- След това се зарежда съществуващата клавиатура, за която искате да се промени , със . (в моя случай Bulgarian Phonetic Traditional)
- Записвате променената клавиатура
- И от Project се избира "Build dll and Setup Package", програмата генерира инсталационни файлове и ви отваря автоматично въпросната директория
- В моя случай ги генерира в C:\Users\вашия-потребител\Documents\layout01, от там стартирате Setup.exe , което инсталира новия език
- Добавяте езика в Region & Language
Ако искате, може да свалите направо готов инсталатор Bulgarian phonetic traditional with dot instead of comma (точка вместо запетая)
неделя, 16 април 2017 г.
Как да обърнем (convert) acsm или ePUB файл към нещо което да се чете Kindle
UPDATED 2025: След като си стопих нервите с качване през имейл или сенд то киндъл , правилният начин е с качествен USB DATA CABLE! а не за зарядно, просто да си качиш AZW3 файла на киндъла
Тъй като хабер си нямам за какво става въпрос, наивно си платих 7лв. и получих някакъв файл със разширение acsm, в него има разни мета тагове и всико останало, но не и съдържанието на самата книга.
За да четете тоя файл ви е необходима безплатната Adobe Digital Editions 4.5, там се логвате (като може и анонимно).
В нея си отваряш книгата и тя си създава някаква папка в Users\Твоя-юзър-нейм\Documents\My Digital Editions
Там въпросната книга явно е свалена и се е конвентирала в някакъв друг "непознат-до-този-момент-за-мен-формат" ePUB
Как да е, но се оказа, че тоя ePUB не може да се качва директно в Kindle-а, заради "политиката на Амазон по не знам си кво" да си купуваш само от техния сайт (където естествено книгата, която търся я няма)....
Та за да конвертираш тоя ePUB към нещо четящо се на Kindle, е необходимо първо да му махнеш някаква DRM защита. След 20 неуспешни опита намерих Epubor EPUB DRM Removal.
Лошото е, че е платен, но има и free trail версия, която за 1 книга сработи при мен, перфектно.
Уловката тук е, че след като я "разкодираш" книгата се записва в някаква друга папка
C:\Users\Твоя-юзър-нейм\EPUBDRMRemoval
Взимаш си го от там тоя ePUB и от тук вече е лесно, с първия срещнат онлайн конвертор я обръщаш към azw3
В моя случай, това свърши работа
http://www.online-convert.com
Пия бира, от скъпата!
понеделник, 10 април 2017 г.
Edit the style of Purity III template
This was a big mess for me, however I hope that I solved it.
Firstly, you have to create your Theme, or edit the existing one in directory /less/themes/
Mine is called 1912, so the final directory becames /less/themes/1912/
Than you have to create a file called custom.less
This file kind of overrides the existing css styling.
When you add any change, than you have to save it from your joomla admin panel
The final but most important part is, when you save it, you have to press "Compile LESS" - воала

Firstly, you have to create your Theme, or edit the existing one in directory /less/themes/
Mine is called 1912, so the final directory becames /less/themes/1912/
Than you have to create a file called custom.less
This file kind of overrides the existing css styling.
When you add any change, than you have to save it from your joomla admin panel
The final but most important part is, when you save it, you have to press "Compile LESS" - воала
понеделник, 14 ноември 2016 г.
Remote Desktop
За да се свържеш към компютър в локалната мрежа, когато те пита за данни за вписване, credentials, преди username-a трябва да се добави localaccount.
Например
localaccount\username
Например
localaccount\username
Абонамент за:
Публикации (Atom)