[[Elasticsearch GUI|http://kaizen.artcom-venture.de/]]
1. Качаем плагин [[тут|http://code.google.com/p/far-plugins/wiki/MacroLib]]. Распаковываем, устанавливаем.
2. Создаем каталог ''%FARHOME%\~Plugins\~MacroLib\Macros''. В этот каталог будем закидывать нужные макросы. Каталог читается плагином по дефолту.
!!!Variable assignment
|Type|Description|h
|{{{VARIABLE = value}}}|''Lazy Set'': values within it are recursively expanded when the variable is used, not when it's declared|
|{{{VARIABLE := value}}}|''Immediate Set'': values within it are expanded at declaration time|
|{{{VARIABLE ?= value}}}|''Set If Absent'': setting of a variable only if it doesn't have a value|
|{{{VARIABLE += value}}}|''Append'': appending the supplied value to the existing value (or setting to that value if the variable didn't exist)|
# Printseal Studio 2
# [[stamp 1.51|http://rutracker.org/forum/viewtopic.php?t=3353386]]
# [[Stamp 0.85|http://rutracker.org/forum/viewtopic.php?t=355177]] - классика
!Online сервисы
* [[http://jsnice.org/|http://jsnice.org/]]
* [[http://jsbeautifier.org/|http://jsbeautifier.org/]]
/***
|''Name:''|SWFObjectPlugin|
|''Description:''|Adobe Flash Embedding|
|''Version:''|1.0.0|
|''Date:''|Aug 22, 2010|
|''Source:''|http://giewiki.appspot.com/plugins/YoutubePlugin#SWFObjectPlugin|
|''License:''|[[MIT open source license]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Chrome; Safari; Firefox; InternetExplorer 6.0|
***/

//{{{

//	SWFObject v2.2 (http://code.google.com/p/swfobject/)
//	is released under the MIT License (http://www.opensource.org/licenses/mit-license.php)

var swfobject=function(){var D="undefined",r="object",S="Shockwave Flash",W="ShockwaveFlash.ShockwaveFlash",q="application/x-shockwave-flash",R="SWFObjectExprInst",x="onreadystatechange",O=window,j=document,t=navigator,T=false,U=[h],o=[],N=[],I=[],l,Q,E,B,J=false,a=false,n,G,m=true,M=function(){var aa=typeof j.getElementById!=D&&typeof j.getElementsByTagName!=D&&typeof j.createElement!=D,ah=t.userAgent.toLowerCase(),Y=t.platform.toLowerCase(),ae=Y?/win/.test(Y):/win/.test(ah),ac=Y?/mac/.test(Y):/mac/.test(ah),af=/webkit/.test(ah)?parseFloat(ah.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,X=!+"\v1",ag=[0,0,0],ab=null;if(typeof t.plugins!=D&&typeof t.plugins[S]==r){ab=t.plugins[S].description;if(ab&&!(typeof t.mimeTypes!=D&&t.mimeTypes[q]&&!t.mimeTypes[q].enabledPlugin)){T=true;X=false;ab=ab.replace(/^.*\s+(\S+\s+\S+$)/,"$1");ag[0]=parseInt(ab.replace(/^(.*)\..*$/,"$1"),10);ag[1]=parseInt(ab.replace(/^.*\.(.*)\s.*$/,"$1"),10);ag[2]=/[a-zA-Z]/.test(ab)?parseInt(ab.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}}else{if(typeof O.ActiveXObject!=D){try{var ad=new ActiveXObject(W);if(ad){ab=ad.GetVariable("$version");if(ab){X=true;ab=ab.split(" ")[1].split(",");ag=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}}catch(Z){}}}return{w3:aa,pv:ag,wk:af,ie:X,win:ae,mac:ac}}(),k=function(){if(!M.w3){return}if((typeof j.readyState!=D&&j.readyState=="complete")||(typeof j.readyState==D&&(j.getElementsByTagName("body")[0]||j.body))){f()}if(!J){if(typeof j.addEventListener!=D){j.addEventListener("DOMContentLoaded",f,false)}if(M.ie&&M.win){j.attachEvent(x,function(){if(j.readyState=="complete"){j.detachEvent(x,arguments.callee);f()}});if(O==top){(function(){if(J){return}try{j.documentElement.doScroll("left")}catch(X){setTimeout(arguments.callee,0);return}f()})()}}if(M.wk){(function(){if(J){return}if(!/loaded|complete/.test(j.readyState)){setTimeout(arguments.callee,0);return}f()})()}s(f)}}();function f(){if(J){return}try{var Z=j.getElementsByTagName("body")[0].appendChild(C("span"));Z.parentNode.removeChild(Z)}catch(aa){return}J=true;var X=U.length;for(var Y=0;Y<X;Y++){U[Y]()}}function K(X){if(J){X()}else{U[U.length]=X}}function s(Y){if(typeof O.addEventListener!=D){O.addEventListener("load",Y,false)}else{if(typeof j.addEventListener!=D){j.addEventListener("load",Y,false)}else{if(typeof O.attachEvent!=D){i(O,"onload",Y)}else{if(typeof O.onload=="function"){var X=O.onload;O.onload=function(){X();Y()}}else{O.onload=Y}}}}}function h(){if(T){V()}else{H()}}function V(){var X=j.getElementsByTagName("body")[0];var aa=C(r);aa.setAttribute("type",q);var Z=X.appendChild(aa);if(Z){var Y=0;(function(){if(typeof Z.GetVariable!=D){var ab=Z.GetVariable("$version");if(ab){ab=ab.split(" ")[1].split(",");M.pv=[parseInt(ab[0],10),parseInt(ab[1],10),parseInt(ab[2],10)]}}else{if(Y<10){Y++;setTimeout(arguments.callee,10);return}}X.removeChild(aa);Z=null;H()})()}else{H()}}function H(){var ag=o.length;if(ag>0){for(var af=0;af<ag;af++){var Y=o[af].id;var ab=o[af].callbackFn;var aa={success:false,id:Y};if(M.pv[0]>0){var ae=c(Y);if(ae){if(F(o[af].swfVersion)&&!(M.wk&&M.wk<312)){w(Y,true);if(ab){aa.success=true;aa.ref=z(Y);ab(aa)}}else{if(o[af].expressInstall&&A()){var ai={};ai.data=o[af].expressInstall;ai.width=ae.getAttribute("width")||"0";ai.height=ae.getAttribute("height")||"0";if(ae.getAttribute("class")){ai.styleclass=ae.getAttribute("class")}if(ae.getAttribute("align")){ai.align=ae.getAttribute("align")}var ah={};var X=ae.getElementsByTagName("param");var ac=X.length;for(var ad=0;ad<ac;ad++){if(X[ad].getAttribute("name").toLowerCase()!="movie"){ah[X[ad].getAttribute("name")]=X[ad].getAttribute("value")}}P(ai,ah,Y,ab)}else{p(ae);if(ab){ab(aa)}}}}}else{w(Y,true);if(ab){var Z=z(Y);if(Z&&typeof Z.SetVariable!=D){aa.success=true;aa.ref=Z}ab(aa)}}}}}function z(aa){var X=null;var Y=c(aa);if(Y&&Y.nodeName=="OBJECT"){if(typeof Y.SetVariable!=D){X=Y}else{var Z=Y.getElementsByTagName(r)[0];if(Z){X=Z}}}return X}function A(){return !a&&F("6.0.65")&&(M.win||M.mac)&&!(M.wk&&M.wk<312)}function P(aa,ab,X,Z){a=true;E=Z||null;B={success:false,id:X};var ae=c(X);if(ae){if(ae.nodeName=="OBJECT"){l=g(ae);Q=null}else{l=ae;Q=X}aa.id=R;if(typeof aa.width==D||(!/%$/.test(aa.width)&&parseInt(aa.width,10)<310)){aa.width="310"}if(typeof aa.height==D||(!/%$/.test(aa.height)&&parseInt(aa.height,10)<137)){aa.height="137"}j.title=j.title.slice(0,47)+" - Flash Player Installation";var ad=M.ie&&M.win?"ActiveX":"PlugIn",ac="MMredirectURL="+O.location.toString().replace(/&/g,"%26")+"&MMplayerType="+ad+"&MMdoctitle="+j.title;if(typeof ab.flashvars!=D){ab.flashvars+="&"+ac}else{ab.flashvars=ac}if(M.ie&&M.win&&ae.readyState!=4){var Y=C("div");X+="SWFObjectNew";Y.setAttribute("id",X);ae.parentNode.insertBefore(Y,ae);ae.style.display="none";(function(){if(ae.readyState==4){ae.parentNode.removeChild(ae)}else{setTimeout(arguments.callee,10)}})()}u(aa,ab,X)}}function p(Y){if(M.ie&&M.win&&Y.readyState!=4){var X=C("div");Y.parentNode.insertBefore(X,Y);X.parentNode.replaceChild(g(Y),X);Y.style.display="none";(function(){if(Y.readyState==4){Y.parentNode.removeChild(Y)}else{setTimeout(arguments.callee,10)}})()}else{Y.parentNode.replaceChild(g(Y),Y)}}function g(ab){var aa=C("div");if(M.win&&M.ie){aa.innerHTML=ab.innerHTML}else{var Y=ab.getElementsByTagName(r)[0];if(Y){var ad=Y.childNodes;if(ad){var X=ad.length;for(var Z=0;Z<X;Z++){if(!(ad[Z].nodeType==1&&ad[Z].nodeName=="PARAM")&&!(ad[Z].nodeType==8)){aa.appendChild(ad[Z].cloneNode(true))}}}}}return aa}function u(ai,ag,Y){var X,aa=c(Y);if(M.wk&&M.wk<312){return X}if(aa){if(typeof ai.id==D){ai.id=Y}if(M.ie&&M.win){var ah="";for(var ae in ai){if(ai[ae]!=Object.prototype[ae]){if(ae.toLowerCase()=="data"){ag.movie=ai[ae]}else{if(ae.toLowerCase()=="styleclass"){ah+=' class="'+ai[ae]+'"'}else{if(ae.toLowerCase()!="classid"){ah+=" "+ae+'="'+ai[ae]+'"'}}}}}var af="";for(var ad in ag){if(ag[ad]!=Object.prototype[ad]){af+='<param name="'+ad+'" value="'+ag[ad]+'" />'}}aa.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ah+">"+af+"</object>";N[N.length]=ai.id;X=c(ai.id)}else{var Z=C(r);Z.setAttribute("type",q);for(var ac in ai){if(ai[ac]!=Object.prototype[ac]){if(ac.toLowerCase()=="styleclass"){Z.setAttribute("class",ai[ac])}else{if(ac.toLowerCase()!="classid"){Z.setAttribute(ac,ai[ac])}}}}for(var ab in ag){if(ag[ab]!=Object.prototype[ab]&&ab.toLowerCase()!="movie"){e(Z,ab,ag[ab])}}aa.parentNode.replaceChild(Z,aa);X=Z}}return X}function e(Z,X,Y){var aa=C("param");aa.setAttribute("name",X);aa.setAttribute("value",Y);Z.appendChild(aa)}function y(Y){var X=c(Y);if(X&&X.nodeName=="OBJECT"){if(M.ie&&M.win){X.style.display="none";(function(){if(X.readyState==4){b(Y)}else{setTimeout(arguments.callee,10)}})()}else{X.parentNode.removeChild(X)}}}function b(Z){var Y=c(Z);if(Y){for(var X in Y){if(typeof Y[X]=="function"){Y[X]=null}}Y.parentNode.removeChild(Y)}}function c(Z){var X=null;try{X=j.getElementById(Z)}catch(Y){}return X}function C(X){return j.createElement(X)}function i(Z,X,Y){Z.attachEvent(X,Y);I[I.length]=[Z,X,Y]}function F(Z){var Y=M.pv,X=Z.split(".");X[0]=parseInt(X[0],10);X[1]=parseInt(X[1],10)||0;X[2]=parseInt(X[2],10)||0;return(Y[0]>X[0]||(Y[0]==X[0]&&Y[1]>X[1])||(Y[0]==X[0]&&Y[1]==X[1]&&Y[2]>=X[2]))?true:false}function v(ac,Y,ad,ab){if(M.ie&&M.mac){return}var aa=j.getElementsByTagName("head")[0];if(!aa){return}var X=(ad&&typeof ad=="string")?ad:"screen";if(ab){n=null;G=null}if(!n||G!=X){var Z=C("style");Z.setAttribute("type","text/css");Z.setAttribute("media",X);n=aa.appendChild(Z);if(M.ie&&M.win&&typeof j.styleSheets!=D&&j.styleSheets.length>0){n=j.styleSheets[j.styleSheets.length-1]}G=X}if(M.ie&&M.win){if(n&&typeof n.addRule==r){n.addRule(ac,Y)}}else{if(n&&typeof j.createTextNode!=D){n.appendChild(j.createTextNode(ac+" {"+Y+"}"))}}}function w(Z,X){if(!m){return}var Y=X?"visible":"hidden";if(J&&c(Z)){c(Z).style.visibility=Y}else{v("#"+Z,"visibility:"+Y)}}function L(Y){var Z=/[\\\"<>\.;]/;var X=Z.exec(Y)!=null;return X&&typeof encodeURIComponent!=D?encodeURIComponent(Y):Y}var d=function(){if(M.ie&&M.win){window.attachEvent("onunload",function(){var ac=I.length;for(var ab=0;ab<ac;ab++){I[ab][0].detachEvent(I[ab][1],I[ab][2])}var Z=N.length;for(var aa=0;aa<Z;aa++){y(N[aa])}for(var Y in M){M[Y]=null}M=null;for(var X in swfobject){swfobject[X]=null}swfobject=null})}}();return{registerObject:function(ab,X,aa,Z){if(M.w3&&ab&&X){var Y={};Y.id=ab;Y.swfVersion=X;Y.expressInstall=aa;Y.callbackFn=Z;o[o.length]=Y;w(ab,false)}else{if(Z){Z({success:false,id:ab})}}},getObjectById:function(X){if(M.w3){return z(X)}},embedSWF:function(ab,ah,ae,ag,Y,aa,Z,ad,af,ac){var X={success:false,id:ah};if(M.w3&&!(M.wk&&M.wk<312)&&ab&&ah&&ae&&ag&&Y){w(ah,false);K(function(){ae+="";ag+="";var aj={};if(af&&typeof af===r){for(var al in af){aj[al]=af[al]}}aj.data=ab;aj.width=ae;aj.height=ag;var am={};if(ad&&typeof ad===r){for(var ak in ad){am[ak]=ad[ak]}}if(Z&&typeof Z===r){for(var ai in Z){if(typeof am.flashvars!=D){am.flashvars+="&"+ai+"="+Z[ai]}else{am.flashvars=ai+"="+Z[ai]}}}if(F(Y)){var an=u(aj,am,ah);if(aj.id==ah){w(ah,true)}X.success=true;X.ref=an}else{if(aa&&A()){aj.data=aa;P(aj,am,ah,ac);return}else{w(ah,true)}}if(ac){ac(X)}})}else{if(ac){ac(X)}}},switchOffAutoHideShow:function(){m=false},ua:M,getFlashPlayerVersion:function(){return{major:M.pv[0],minor:M.pv[1],release:M.pv[2]}},hasFlashPlayerVersion:F,createSWF:function(Z,Y,X){if(M.w3){return u(Z,Y,X)}else{return undefined}},showExpressInstall:function(Z,aa,X,Y){if(M.w3&&A()){P(Z,aa,X,Y)}},removeSWF:function(X){if(M.w3){y(X)}},createCSS:function(aa,Z,Y,X){if(M.w3){v(aa,Z,Y,X)}},addDomLoadEvent:K,addLoadEvent:s,getQueryParamValue:function(aa){var Z=j.location.search||j.location.hash;if(Z){if(/\?/.test(Z)){Z=Z.split("?")[1]}if(aa==null){return L(Z)}var Y=Z.split("&");for(var X=0;X<Y.length;X++){if(Y[X].substring(0,Y[X].indexOf("="))==aa){return L(Y[X].substring((Y[X].indexOf("=")+1)))}}}return""},expressInstallCallback:function(){if(a){var X=c(R);if(X&&l){X.parentNode.replaceChild(l,X);if(Q){w(Q,true);if(M.ie&&M.win){l.style.display="block"}}if(E){E(B)}}a=false}}}}();
//}}}
!!Интернет и мудрецы
Татьяна Ефременко
http://tanya-again.livejournal.com/36982.html

//Хоген, китайский мастер Дзен, жил один в маленьком храме в деревне. Однажды четыре странствующих монаха попросили его разрешить им разжечь костер и обогреться. Когда они устроили костер, Хоген услышал, что они спорят об объективности и субъективности. Он присоединился к ним и сказал: "Вот большой камень. Как вы считаете, находится он внутри или вне нашего сознания?" Один из монахов ответил: "С буддистской точки зрения всякая вещь является воплощением сознания, так что по-моему, камень находится внутри сознания." "Твоя голова, должно быть очень тяжелая, -- сказал Хоген, -- если ты таскаешь в своем сознании такие камни.//

Прочитала сейчас во френдленте дзенскую притчу, и вдруг задумалась - а что, если бы это было не изречение древнего китайца (реального или вымышленного), а просто ЖЖ-пост, написанный нашим современником? Или даже лучше не пост, а комментарий. Такой вот диалог в комментариях:<br /><br />- Объективность или субъективность? Я за второе!<br />- А вот, допустим, ты видишь большой камень. Он внутри или вне твоего сознания?<br />- Конечно, внутри. Я же сказал.<br />- Ну и тяжелая у тебя голова, если ты в ней таскаешь такие камни!<br /><br />Завершился бы на этом диалог, прониклись бы читатели мудростью ответа? Да нет же! Разговор продолжился бы примерно в таком духе:<br /><br />- Если ты не понимаешь разницы между метафорой и физической реальностью, мне не о чем с тобой спорить. <br /><br />Или так:<br /><br />- Ага, тяжелая, не жалуюсь. Это у тебя, небось, пустой шар на плечах.<br /><br />Или так:<br /><br />- Британские ученые доказали, что вес - понятие относительное... <br /><br />Вариантов множество. И все они при должном усердии собеседников привели бы к одному итогу - глобальному срачу. Такой мысленный эксперимент можно провести со многими признанными образчиками ловко завернутой мысли... <br /><br />Допустим, заводит себе бложек Франсуа Ларошфуко. И пишет, весь такой пафосный: "Зло, которое мы причиняем, навлекает на нас меньше ненависти и преследований, чем наши достоинства". На него тут же выливается ушат ехидных комментариев:<br /><br />- Да-да, ты такой крутой, и именно за это тебя ненавидят. Дешевая отмазка неудачника...<br />- Странно, почему тогда на работе меня поощряют за качество и оперативность, а за ошибки наказывают? Согласен с первым комментатором!<br />- КГАМ!<br />- И сколько зла ты уже причинил? На угол дома соседу по даче нассал, разве что? <br />- Хе-хе, представляю, мужик, что у тебя в таком случае за достоинства! <br /><br />Или возьмем Бернарда Шоу. Берет он и пишет: "Жизнь не перестает быть забавной оттого, что люди умирают, и не перестает быть серьезной оттого, что они смеются". Комментаторы вскидываются:<br /><br />- Сразу видно человека, ни разу не пережившего утрату близкого. Мальчик, тебе лет сколько? <br />- Вы что, серьезно? Кто-то умер, а вам забавно? Чудовище!<br />- КГАМ!<br />- Ты просто смешон в своих потугах сказать что-то умное! И это очень серьезно, хе-хе. <br />- О, аффтар открыл для себя теорию относительности? Поздравляю. <br /><br />Ну или обратимся к народной мудрости. Вот наш народный мудрец делится с сетевой общественностью свежей мыслью: "Жид крещеный - что вор прощеный". Следуют ответы:<br /><br />- Тупой нацик!<br />- Я обращаюсь в конфликтную комиссию!<br />- "Антисемитизм - это социализм дураков и невежд", как говорил великий Август Бебель (не то что ты, чмо подзаборное).<br />- Согласен с предыдущим комментатором!<br />- А что такого вы видите в прощении????... В том-то и дело, что христианство учит нас ПрОщАтЬ!!!!!! Между прочим, кто написал Библию? А? Вот то-то же!!..!! Я бы на вашем месте сходил на исповедь. =(((((((((( <br />- КГАМ! <br />- И это говорится в стране, победившей фашизм! За что воевали ваши деды? Зачем горели топки холокоста? <br /><br />...Короче говоря, то, что принято называть "мудрой мыслью" или "удачным изречением", совершенно беззащитно перед толпами интернет-комментаторов. Если убрать ограду академических обложек (которая, впрочем, тоже не всегда спасает) - даже самый талантливый человек становится легкой мишенью для быдлоты. Почему так? <br /><br />Начнем с того, что попытаемся дать определение "мудрой мысли". Обязательно ли она "абсолютно истинна"? Конечно, нет. В этом мире вообще не существует никакой "абсолютной истины". Все зависит от своевременности высказывания и личных взглядов автора и читателей. Допустим, вышеприведенное изречение Шоу звучало бы неуместно (а значит, глупо) на чьих-то похоронах. А поговорку про жида не стоит употреблять, общаясь с нормальным человеком с еврейскими корнями. <br /><br />Что же касается личных взглядов... Ну вот лично с моей точки зрения немалая часть высказываний того же Шоу неверно отражает реальность. Скажу ли я, что "Шоу не мудрец, а мудак"? Да нет же. Ибо дело в другом. Хотя многие его высказывания не соответствуют моим взглядам - они <i>вдохновляют</i>. Так и хочется взять и написать развернутый ответ, изящно отбросить поданный мячик, хитро вплести афоризм в ткань собственного творчества и показать его с неожиданной стороны. Именно это и есть критерий мудрости - независимо от соответствия/несоответствия взглядов, высказывания автора вдохновляют читателя. Заставляя, таким образом, и дальше вращаться жернова длящейся тысячелетиями работы коллективного ума.    <br /><br />Однако у работы ума есть мощный противник - примитивные, зачастую извращенные инстинкты. И творческому вдохновению противостоит желание помолоть языком на низших уровнях, уровнях стайной иерархии. Есть два способа обеспечить вдохновению победу в этой схватке. Первый способ, насильственный, применялся ко всем нам в школьные годы. Те самые академические обложки. "Это гений, а ты мудак; давай пиши сочинение по его великому произведению". Второй способ, ненасильственный - это то самосознание, которое по идее должно было стать итогом школьного воспитания (но стало далеко не у всех). Уверенность в себе, довольство своим местом в обществе и своими возможностями. А главное - искренняя любовь к работе ума. <br /><br />Зрелый и разумный человек уже не испытывает перманентной потребности дешево самоутвердиться в стае - у него в этом плане все хорошо. И он может спокойно вчитываться в чьи-то мысли, думая - "могу ли и хочу ли я добавить сюда что-то свое?". Вскоре он обнаруживает, что некоторые авторы вызывают отклик очень часто и очень у многих... Именно так, за счет заслуженного внимания со стороны зрелых людей, и обретают славу авторы, которых потом начинают называть мудрецами и заключать в академические обложки. Ничего сверхъестественного. <br /><br />А зачем вступает в диалог человек не зрелый и не разумный? Его цель - самоутверждение. Как минимум за счет привлечения внимания к себе, любимому. Как максимум - за счет унижения собеседника. Мне часто приходится вычитывать комментарии к различным текстам. Так вот, если бы вы знали, как часто люди элементарно не дочитывают тексты до конца! И гневно пишут в комментариях - "вы не написали, что NNN". В то время как NNN полностью посвящены три последних абзаца. Часто впечатление о тексте составляется по принципу "слышал звон, да не знаю, где он". И человек по сути отвечает не на сам текст, а на какие-то левые слухи и домыслы о нем - хотя, казалось бы, вот он, оригинал, почему бы не ознакомиться? <br /><br />А потому, что комментатору на самом деле глубоко плевать на этот текст, его тему и его автора. Такому человеку нужно другое - показать другим комментаторам свою аватарку и ник, снискать чью-то поддержку, кого-то эпатировать. Нередко между строк прямо-таки светится фраза: "ну ОБРАТИТЕ НА МЕНЯ ВНИМАНИЕ, ну ПОСМОТРИТЕ, КАКИЕ У МЕНЯ ПРОБЛЕМЫ". Например, человек может тут и там писать, что "все бабы бляди" - на самом деле просто стремясь показать окружающим, какой он обиженный и одинокий. <br />     <br />...Прошу не делать из этого текста вывод - "раз она все это говорит, значит, она причисляет себя к безбрежно крутым-зрелым-разумным гениям, которые никогда не пишут комментарии ради поддержки или эпатажа". Я тоже живая, и у меня порой случались (и даже до сих пор случаются) проколы. Однако я с определенного времени понимаю внутренний механизм этой нехорошей манеры. И стараюсь отсекать ее проявления. Написала комментарий? Отлично, глубоко вздохни и честно ответь на вопрос - нафига ты его написала? Точно ли тобою двигало спокойное вдохновение, или все же нервные иерархические позывы внутренней обезьяны? Если первое - нажимай "опубликовать". Если же вдруг второе - закрой вкладку браузера. Если смесь первого или второго - отредактируй текст, вырежь "обезьяньи" реплики. Текст теперь кажется невыносимо скучным и пресным, внутренняя обезьяна негодует? Отлично, это-то нам и надо. <br /><br />Ну а если уж совсем невмоготу, то есть маленький секрет... Можно во время диалога мысленно прибавлять ко всем своим вежливым-вежливым репликам словосочетание "ты, ебучее чмо". Тогда разговор становится куда веселее. И конструктивность при этом не страдает (реплики-то мысленные, их не придется назавтра перечитывать и краснеть). ;)
При зависании windows update, когда он хавает кучу памяти, половину проца и ничего не делает, помогли следующие действия:
* поставить вручную часть обновлений с помощью [[UpdatePack7R2|http://forum.oszone.net/thread-257198.html]]
* отключить службу, удалить каталог %windir%\~SoftwareDistribution
* скачать [[KB3050265|https://support.microsoft.com/en-us/kb/3050265]], перезапустить службу, поставить его
* скачать [[KB3065987|https://support.microsoft.com/en-us/kb/3065987]], перезапустить службу, поставить его
* скачать [[KB3102810|https://support.microsoft.com/en-us/kb/3102810]], перезапустить службу, поставить его
После этих действий, памяти стало жрать меньше и обновления таки пошли.
!Skype resolve
* [[http://api.predator.wtf|http://api.predator.wtf]]
* [[https://resolvethem.com/|https://resolvethem.com/]]
!Анонимизация proxy/vpn
* [[VPN Gate|http://www.vpngate.net/en/]]
* [[advtor|http://sourceforge.net/projects/advtor/]]
* [[JonDonim|https://anonymous-proxy-servers.net/en/overview.html]]
!Анонимизация HTTP
* [[NewIPNow|http://www.newipnow.com/]]
* [[freeGate|https://fri-gate.org/ru/]]
* [[HideMyAss|https://www.hidemyass.com/ru/]]
* [[stealthy|http://www.stealthy.co/]]
* [[ultrasurf|http://ultrasurf.us/]]
!Анонимная OS/VM
* [[Whonix|https://www.whonix.org/]] - Debian/Tor-based дистр, [[сравнение|https://www.whonix.org/wiki/Comparison_with_Others]] Whonix с другими дистрами
* [[Tails|https://tails.boum.org/]]
* Дистры для пентестинга/эксплойтинга
** [[Parrot Security OS|http://sourceforge.net/projects/parrotsecurity/]] - Debian based
** [[Cyborg Hawk Linux|http://cyborg.ztrela.com/]] - ubuntu based, полный набор тулзов для пентеснигна
!Reverse engineering
* [[https://mobilesecuritywiki.com/|https://mobilesecuritywiki.com/]] - сборник тулзов/сервисов для реверз-инженеринга андроид приложений
* [[Androguard|https://github.com/androguard/androguard]] - питоновский тулкит для разборки апкшек
* Анализ/просмотр PE ([[обзор софта|http://www.manhunter.ru/underground/94_programmi_dlya_analiza_ispolnyaemih_faylov.html]])
** [[Detect It Easy|http://ntinfo.biz/]] - проект не развивается, репы на гитхабе: [[сигнатуры|https://github.com/horsicq/Detect-It-Easy]], [[engine|https://github.com/horsicq/DIE-engine]]
!Exploiting / Hacking
* [[Veil Framework|https://www.veil-framework.com/]] - для генерации пейлоадов в мсф с обходом антивирей ([[реп на гитхабе|https://github.com/Veil-Framework/Veil-Evasion]])
* [[Shellter|https://www.shellterproject.com/download/]] - обход антивирей по-проще
!Exploits
* [[vulners.com|https://vulners.com]] - online поиск эксплоитов (дока и апи [[тут|http://forum.antichat.ru/threads/435671/]])
* [[RouterSploit|https://github.com/reverse-shell/routersploit]] - хорошо обновляемый пак эксплоитов для роутеров
!Stealers
* [[LaZagne|https://github.com/AlessandroZ/LaZagne/releases/]]
!Cryptors
* [[peinjector|https://github.com/JonDoNym/peinjector]] - умеет steamless/static джоинить x64/x32 win PE файлов, написан на C, имеет в комплекте сервер для ~MITM-атаки
* [[BDFProxy|https://github.com/secretsquirrel/BDFProxy]] - steamless не умеет, ELF/PE джоинер, написан на Python
<<youtube LU97D34k_m4 -600>>
[[https://github.com/jlevy/the-art-of-command-line/blob/master/README-ru.md|https://github.com/jlevy/the-art-of-command-line/blob/master/README-ru.md]]
# Раскладки клавы: добавить английский и русский языки, последний с русской и украинской раскладкой. Переключение языков - shift-ctrl, переключение раскладки - shift-alt
# Запустить iexplorer, поставить Firefox и [[дополнения|Mozilla Firefox Add-ons]]
# ''Win10'' отключить раздачу скачанных обновлений на другие машины - [[http://www.pcworld.com/article/2955491/windows/how-to-stop-windows-10-from-using-your-pcs-bandwidth-to-update-strangers-systems.html]]
# "Win10" для Home версии - вернуть gpedit.msc - [[https://www.itechtics.com/enable-gpedit-windows-10-home/]]
# ''Win7'' Поставить [[GWX Control Panel|http://ultimateoutsider.com/downloads/]], запретить обновление до вин10
# ''Win7'' В центре обновления поставить - "Загружать обновления, но решение по установке принимается мной"
# ''Win7'' В центре поддержки отключить сообщения про архивацию, защиту от вирусов
# ''Win7'' Поставить [[Microsoft Visual C++ Redistributable Package|http://forum.oszone.net/thread-145766.html]]
# Проверить на обновления драйверов через [[DriverPack-Online|https://drp.su/ru/]], заинсталить directx, .net etc, снять галочки на вкладках приложений добавить/убрать
# В свойствах системы проверить "Защита системы" на системном диске и запрет на остальных дисках. Там же, в дополнительно, поставить фиксированный размер файла подкачки.
# ''Win7'' Обновить [[iexplorer|https://support.microsoft.com/ru-ru/help/18520/download-internet-explorer-11-offline-installer]] до 11 версии.
# Установить нужные [[приложения|Полезные утилиты для Windows]]
# После установки приложений, с помощью [[autoruns|https://technet.microsoft.com/en-us/sysinternals/bb963902.aspx]] проверить автозагрузку (этот autoruns положить в System32)
# ''Win7'' Убрать уродские границы у окон: Панель управления->Оформление и персонализация->Персонализация, там внизу кликнуть "Цвет окна" (здесь можно выбрать цвет и прозрачность границ и заколовка окон для Aero темы), там на "Дополнительные параметры оформления...", там найти элемент "Обрамление" и поставить размер "0".
!Оптимизация Win10
!!Изменение языка single language edition
Общая инфа - [[https://stackoverflow.com/a/31700488|https://stackoverflow.com/a/31700488]]
Ссылки на языковые пакеты искать в гугле по версии винды, например: {{{"lp.cab" windows 10 1803}}}
!!Search Indexer
Удаляем лишние места поиска:
* Use the keyboard shortcut ~Windows-Pause to open the System control panel.
* Click on "All control panel items" in the location bar at the top.
* Locate and click on Indexing Options.
Оставить там только "Start Menu". Сделать Rebuild по Advanced кнопке.
!!Потребители трафика
Для отключения трафик-жорства, отключить службы:
* ''Оптимизация доставки''
* ''Фоновая интеллектуальная служба передачи (BITS)''
* ''Центр обновления Windows''
Поможет это не на долго. Винда их включит опять через какое-то время. Отключение/управление автообновлением через gpedit.msc - не работает на Win10.
!Оптимизация Win7
!!Оптимизация визуальных эффектов
* Обвязка контр.панели "Система"->"Дополнительные параметры"->"Дополнительно"->"Быстродействие"->"Параметры..."->"Визуальные эффекты"->Снять все галочки, поставить галочки на:
** Включить композицию рабочего стола
** Использование стилей отображения окон и кнопок
** Отображать эскизы вместо значков
** Сглаживать неровности экранных шрифтов.
* Галочки для win8:
** Анимация на Панели задач (для максимальной производительности можно не отмечать)
** Анимация окон при свертывании и развертывании
** Выводы эскизов вместо значков
** Эффекты затухания и скольжения при обращении к меню
** Сглаживание неровностей экранных шрифтов
!!Отключаем службы
* Вспомогательная служба IP (Support IP Service)
* Служба ввода планшетного ПК (Service entry Tablet PC)
* Удаленный реестр (Remote registry)
* Автономные файлы
* Служба регистрации ошибок Windows
* Модули ключей ~IPsec для обмена ключами в Интернете и протокола IP
* Клиент отслеживания изменившихся связей
* ''[отключит автозапуск dvd/usb flash]'' Определение оборудования оболочки
* ''[отключит встроенный поиск файлов]'' --Поиск Windows (Windows Search)-- (отключается через компоненты)
* Агент политики ~IPSec
* ''[запрет запуска приложений от другого юзера]'' Вторичный вход в систему
* ~KtmRm для координатора распределенных транзакций
* Факс
* Политика удаления смарт-карт
* Служба инициатора Майкрософт iSCSI 
* Обнаружение SSDP (''? спорно, но пока что отключение безопасно'')
* Адаптивная регулировка яркости
* Parental Controls
* Смарт-карта
* Служба планировщика Windows Media Center
* Защищенное хранилище
* Служба шифрования дисков ~BitLocker
* ''[отключит bluetooth]'' Служба поддержки Bluetooth
* Архивация Windows
* Служба общих сетевых ресурсов проигрывателя Windows Media
* Служба политики диагностики
* Diagnostics Tracking Service
* Если нет принтера:
** Диспетчер печати (Print Spooler) если к компьютеру не подключен принтер. 
* Если не используем RDP:
** Служба удаленных рабочих столов (~TermService)
* Если нет локалки:
** Браузер компьютеров
** Сервер
** Рабочая станция
** Поставщик домашней группы
** Модуль поддержки ~NetBIOS через TCP/IP
** Группировка сетевых участников
** Диспетчер удостоверения сетевых участников
** Публикация ресурсов обнаружения функции
* Если используется антивирь
** Защитник Windows
** Брандмауэр Windows
!Отключаем компоненты
* Панель управления->Программы и компоненты->Включение и отключение компонентов Windows
** Window search
** Компоненты планшетного ПК
** Платформа гаджетов Windows
** Службы XPS
** Службы печати документов
** Средство просмотра XPS
** Удаленное разносное сжатие
!Enable telnet
* Run cmd as administrator
* Run command: {{{pkgmgr /iu:"TelnetClient"}}}
!Отключение гибернации и самопроизвольного ухода в засыпание
* Выполнить в cmd из под админа: ''powercfg -h off'' (это изменит параметр реестра ''HKLM\SYSTEM\~CurrentCongtrolSet\Control\Power\~HibernateEnabled'' на ''0'')
* Вручную подредактировать ''HKLM\SYSTEM\~CurrentCongtrolSet\Control\Power\~HiberFileSizePercent'', поставить там ''0''
* reboot
!PE executable packer
* [[BeRoEXEPacker|http://www.rosseaux.net/page40_BeRoEXEPacker.html]] - пакует лучше upx
!Windows generic check
* [[Windows-privesc-check|https://github.com/pentestmonkey/windows-privesc-check]] - общая проверка винды для нахождения левых настроек, которые дают возможность повышать привелегии, Python, portable
!Setup
!!УБРАТЬ НАХРЕН ПОРЧУ КОНЦОВ СТРОК
{{{
git config --global core.autocrlf false
}}}
!!Enable perforce merge tool
Link: [[https://gist.github.com/dgoguerra/8258007]]
{{{
git config --global diff.tool p4merge
git config --global difftool.p4merge.path "C:/Program Files/Perforce/p4merge.exe"
git config --global merge.tool p4merge
git config --global mergetool.p4merge.path "C:/Program Files/Perforce/p4merge.exe"
}}}
Using config file({{{~/.gitconfig}}} or {{{git config --global --edit}}})
{{{
[merge]
	tool = p4merge
[mergetool "p4merge"]
	path = C:\\Program Files\\Perforce\\p4merge.exe
[diff]
	tool = p4merge
[difftool "p4merge"]
	path = C:\\Program Files\\Perforce\\p4merge.exe
}}}
!!Author
{{{
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
}}}

|Add files/changes to the index|c
|Command|Description|h
|{{{git add .}}}|add new and modified files only in current directory|
|{{{git add -u .}}}|add modified and deleted files only in current directory|
|{{{git add -A .}}}|add new, modified and deleted files only in current directory|
|{{{git add -u}}}|add modified and deleted files under current tree|
|{{{git add -A}}}|add new, modified and deleted files under current tree|

|Revert changes/commits|c
|Command|Description|h
|{{{git checkout <file>/<directory>}}}|reset local changes, get file/directory from repository|
|{{{git rm --cached <file>}}}|remove file from index|
!Push new local branch to remote repo
{{{
# create branch
git branch <branch name>
# checkout branch
git checkout <branch name>
# push branch to the remote repo
git push -u origin <branch name>
}}}
!Обновить ветку с апстрима
{{{
# забрать апстрим
git fetch upstream
# залить в текущую локальную ветку
git merge upstream/master
}}}
!Executable permission on Windows
{{{git ls-files --stage}}} - view files in stage area with permissions
{{{git update-index --chmod=+x foo.sh}}} - set executable bit for file {{{foo.sh}}}
!Синхронизация форка с другим не-гит репо (upstream)
1. На гитхабе делаем временный репо из upstream
{{{
Githum->Import repository...
Your old repository’s clone URL: http://hg.code.sf.net/p/twapi/code
Your new repository details \ Name: twapi-sync
Begin Sync...
}}}
2. Клонируем временный репо
{{{
$ git clone https://github.com/chpock/twapi-sync.git
}}}
3. Добавляем к временному репо свой форк как remote
{{{
$ cd twapi-sync
$ git remote add fork https://github.com/chpock/twapi.git
}}}
4. Заливаем изменения в форк
{{{
$ git push fork --all
}}}
5. Удаляем временный репо на гитхабе
!Форк fossil репо на гитхабе
''Warning:'' у fossil по дефолтная ветка называется "trunk". После импорта на гитхаб, необходимо обновить дефолтную ветку настройках репо: Settings->Branches->Default branch

1. Сделать реп на гитхабе, не инициализировать его
2. Склонировать fossil репо
{{{
$ fossil clone http://core.tcl.tk/tdom tdom.fossil
}}}
3. Инициализировать новый гит репо и залить туда данные с fossil репо, удалить fossil репо
{{{
$ git init tmprepo
$ cd tmprepo
$ fossil export --git ../tdom.fossil | git fast-import
$ rm -f ../tdom.fossil
}}}
4. Поставить в временном гит репо гитхаб как remote и залить все на гитхаб
{{{
$ git remote add origin https://github.com/chpock/tdom.git
$ git push origin --all
}}}
5. Временный гит репо больше не нужен, можно удалять
!Submodules
!!Add submodule to project
{{{
$ git submodule add https://github.com/chpock/tdom.git src/tdom
}}}
Добавить сабмодуль за репозитория {{{https://github.com/chpock/tdom.git}}} в директорию {{{./src/tdom}}}
!Worktrees
|Command|Example|Description|h
|{{{git worktree add <path> [<branch>]}}}|{{{git worktree add ../nimbus-10.0 release-10.0}}}|Create a new work tree in the directory {{{<path>}}} with the specified branch (optional)|
|{{{git worktree list}}}|{{{git worktree list}}}|List worktrees|
|{{{git worktree remove -f <path>}}}|{{{git worktree remove -f ../nimbus-10.0}}}|Remove worktree|
|{{{git worktree prune}}}|{{{git worktree prune}}}|Prune worktrees|
!Установка
Качаем файлы с [[Download|http://www.9bis.net/kitty/?page=Download]] в отдельный каталог и переименовываем:
|Старое имя|Новое имя|h
|kitty_nocompress.exe|putty.exe|
|kageant.exe|pageant.exe|
|klink.exe|plink.exe|
|kscp.exe|pscp.exe|
!Генерация глючей
# Запускаем: {{{putty -keygen}}}
# Нажимаем кнопочку "Generate"
# Если надо - ставим пароль на приватный ключ
# Сохраняем публичный ключ как: {{{id_rsa.pub}}}
# Сохраняем приватный ключ как: {{{id_rsa.ppk}}}
Name: MptwSmoke
Background: #fff
Foreground: #000
PrimaryPale: #aaa
PrimaryLight: #777
PrimaryMid: #111
PrimaryDark: #000
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88

# [[DejaVu шрифты|http://dejavu-fonts.org/wiki/Download]], для кодинга - ''~DejaVu Sans Mono''
# Ставим Package Control по команде в консоли, [[тут|https://packagecontrol.io/installation]] мануал.
# + пакет ~SideBarEnhancements
# + пакет ~TrailingSpaces
# + пакет ~SublimeLinter
# + пакет ~SublimeLinter-jshint
## для него, в ноду инсталим пакет ''npm install -g jshint''
# + пакет ~SublimeLinter-csslint ([[инструкция по установке|https://github.com/SublimeLinter/SublimeLinter-csslint]])
## для него, в ноду инсталим пакет ''npm install -g csslint''
## настроить игнорирование предупреждений - Preferences->Package Settings->~SublimeLinter->Settings - User... в ignore для csslint добавить ''"box-model,order-alphabetical,ids"''
### ''box-model'' - разрешает padding/border при указаном width/height
### ''order-alphabetical'' - резрешает указание стилей не в алфавитном порядке
### ''ids'' - разрешает селекторы по id
# Поставить ~MOBILedit
# Поставить драйвер-пак
# Поставить Excel, Outlook (Word тоже не по мешает)
# Запустить Outlook что бы он создал пользовательский профиль.
# Поставить MS ~ActiveSync
[[...что у нас тут...]]
1. [[Получаем рабочий tclkit]]
2. Получаем исходники sdx командой ''~WindowsNT_kbsvq*.exe sdx.kit unwrap sdx.kit''
3. Копируем все из ''~WindowsNT_kbsvq*.vfs'' в ''sdx.vfs''
4. Собираем sdx.exe командой "~WindowsNT_kbsvq*.exe sdx.kit wrap sdx.exe -runtime ~WindowsNT_kbsvq*.head''
1. Зарегистрироваться на сайте http://www.im-history.ru
2. [[Качаем|http://www.im-history.ru/downloads.html]] минимальный пак для Miranda NG
3. Распаковать каталог в архиве ''Plugins'' в ''Miranda\Plugins''
4. Запустить Миранду, обновить через ''Главное меню Миранды -> ~MirandaNGHistoryToDB -> Проверить наличие обновлений''
5. Настроить коннект к базе данных через ''Главное меню Миранды -> ~MirandaNGHistoryToDB -> Настройки''. Там же поставить автоматическую синхронизацию. В ''Шифрование истории'' создать новый ключ с паролем. Поставить галочку в ''События -> скрыть из трея'' - все операции доступны непосредственно из Миранды.
6. Если плагин поставлен первый раз - экспортировать текущую историю в базу ''Главное меню Миранды -> ~MirandaNGHistoryToDB -> Экспортировать историю''

//Необходимо еще экспортировать из Миранды список контактов и протоколов, но, этот пункт еще в доработке, глючит он что-то.//
* 44.0.0.0/8 - любительское радио https://www.reddit.com/r/amateurradio/comments/ohi7j/did_you_know_that_there_is_a_classa_16777216/
* 11.0.0.0/8, 22.0.0.0/8, 26.0.0.0/8, 28.0.0.0/8, 29.0.0.0/8, 30.0.0.0/8, 33.0.0.0/8 - мин.обороны США
Манагер clipboard - [[https://ditto-cp.sourceforge.io/|https://ditto-cp.sourceforge.io/]]
!Настройка вставки для putty
!!Если поставлено из Windows Store
Искать "{{{Ditto.Settings}}}" файл в {{{c:/Users/<USERNAME>/AppData/Local}}}
Добавить туда:
{{{
[PasteStrings]
putty.exe=+{INS}
ConEmu64.exe=+{INS}
ConEmu.exe=+{INS}
}}}
!!Если поставлено как обычно либо портабл, смотреть ссылки:
* [[https://sourceforge.net/p/ditto-cp/discussion/287511/thread/c6789e56/|https://sourceforge.net/p/ditto-cp/discussion/287511/thread/c6789e56/]]
* [[https://ronkitay.wordpress.com/2013/05/13/teaching-ditto-to-paste-into-securecrt/|https://ronkitay.wordpress.com/2013/05/13/teaching-ditto-to-paste-into-securecrt/]]
* [[https://sourceforge.net/p/ditto-cp/discussion/287511/thread/f863f997/|https://sourceforge.net/p/ditto-cp/discussion/287511/thread/f863f997/]]
1. Качаем плагин [[тут|http://plugring.farmanager.com/plugin.php?pid=15]]. Распаковываем, устанавливаем.
2. При уже настроенном [[PlugMenu|Настройка плагина для Far - PlugMenu]], входим в меню плагинов по ''F11'', нажимаем на калькуляторе ''F4'', ставим ''Hot Key'' как "''c''"
3. В каталоге [[MacroLib|Настройка плагина для Far - MacroLib]] делаем файлик ''Calculator.fmlua'', прописываем там:
{{{
macro Descr="Call Calculator" Key="CtrlF6"
{{
  Keys("F11 c c")
}}
}}}
4. Имеем калькулятор, который вызывается по ''~Ctrl-F6'' как в старом добром DN
!Post install tweaks
* ''Настройки->Поиск'' - выпилить яндекс и другой тупой поиск, оставить гугл
* ''Настройки->Основные'' - показывать вкладки, открытые в прошлый раз
!about:config tweaks
* ''browser.tabs.animate'' -> ''false'' - запретить анимацию новых вкладок
* ''browser.cache.use_new_backend'' -> ''1'' - якобы, продвинутый кэш (не проверено)
* ''network.http.pipelining'' -> ''true''
* ''network.http.pipelining.aggressive'' -> ''true''
* ''network.http.pipelining.maxrequests'' -> ''8''
* ''network.http.pipelining.ssl'' -> ''true'' - разрешить множественные запросы по одному коннекту (не проверено)
* ''network.dns.disableIPv6'' -> ''true'' - запретить ipv6 (не проверено)
* ''browser.sessionhistory.max_entries'' -> ''10'' - сколько хранить историй для каждой сессии (не проверено)
* ''network.prefetch-next'' -> пред-загружать контекст ''false'' для медленного инета и машины, ''true'' - для быстрого инета и машины
!Отключение встроенного кодека h264
* ''media.gmp-provider.enabled'' -> ''false''
!Полезные расширения
[''FF Quantum''] [[Tree Style Tab|https://addons.mozilla.org/ru/firefox/addon/tree-style-tab/]] - вкладки в сайдбаре, github: [[https://github.com/piroor/treestyletab|https://github.com/piroor/treestyletab]]
* добавить твики в ~userChrome.css (по дефолту его нет, как его создать - [[тут|https://www.userchrome.org/how-create-userchrome-css.html]]):
** Отключить обычные табы:
{{{
#main-window[tabsintitlebar="true"]:not([extradragspace="true"]) #TabsToolbar {
  opacity: 0;
  pointer-events: none;
}
#main-window:not([tabsintitlebar="true"]) #TabsToolbar {
    visibility: collapse !important;
}
}}}
** Убрать заголовок у сайдбара:
{{{
#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
  display: none;
}
}}}
[''FF Quantum''] [[Tab Session Manager|https://addons.mozilla.org/en-US/firefox/addon/tab-session-manager/?src=search]] - манагер сессий
[[LastPass Password Manager|https://addons.mozilla.org/en-US/firefox/addon/lastpass-password-manager/]]
--[[Download Manager Tweak|https://addons.mozilla.org/en-US/firefox/addon/download-manager-tweak/]]--
--[[RSS Icon In Awesombar|https://addons.mozilla.org/en-US/firefox/addon/rss-icon-in-awesombar/]]-- - эта функция есть в Classic Theme Restorer
[[Russian Hunspell dictionary|https://addons.mozilla.org/en-US/firefox/addon/russian-hunspell-dictionary/]]
[[Tab Mix Plus|https://addons.mozilla.org/ru/firefox/addon/tab-mix-plus/]] - табы в несколько строк + дополнительные фичи к табам
* Менеджер сессий Tab Mix - не использовать. Отключить его и включить встроенные сессии. Он не сохраняет сессию автоматически, только при корректном выходе из firefox. Поэтому нельзя восстановить сессию при вылете.
--[[MinimizeToTray revived|https://addons.mozilla.org/en-US/thunderbird/addon/minimizetotray-revived/]] - минимизация в трей--
--[[Hide Unwanted Results of Google Search|https://addons.mozilla.org/en-US/firefox/addon/hide-unwanted-results-of-go/]] - удалять сайты из поисковой выдачи гугла--
[[Greasemonkey|https://addons.mozilla.org/ru/firefox/addon/greasemonkey/]]
[[Master Password+|https://addons.mozilla.org/en-US/firefox/addon/master-password/]]
[[VKOpt|http://vkopt.net/download/]]
[[Imagus|https://addons.mozilla.org/ru/firefox/addon/imagus/]] - показывает картинку в полном размере при наведении мышкой
--[[Readability|https://www.readability.com/addons]] - закидывание страниц в редабилити-- - не зашел сервис, Pocket есть по дефолту
--[[Diigo|https://addons.mozilla.org/ru/firefox/addon/diigo-web-highlighter-and-stic/]] - закладки-- - заменен на Raindrop.io
--* ''Toolbar Options...''->''Toolbar and Menus''->''Show drop-down menu when text is selected'' - убрать checkbox, убирает аннойное меню при выделении текста на странице--
[[Raindrop.io|https://addons.mozilla.org/ru/firefox/addon/raindropio/]] - закладки
[[HTML5 Video Everywhere!|https://addons.mozilla.org/en-US/firefox/addon/html5-video-everywhere/]] - замена флеш видео плеера на нативный, играется быстрее
[[Zoom Page WE|https://addons.mozilla.org/en-US/firefox/addon/zoom-page-we/]] - дефолтный зум (старая версия [[тут|https://addons.mozilla.org/en-US/firefox/addon/zoom-page/]])
!Adblock
* [[µBlock|https://addons.mozilla.org/ru/firefox/addon/ublock-origin/]]
--* Поставить расширение [[Adblock Plus|https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/]]--
--* Снять чекбокс "показывать ненавязчивую рекламу"--
--* В опциях снять чекбокс "Count filter hits"--
--* Зайти на [[RuAdList|https://code.google.com/p/ruadlist/]], добавить основную подписку, подписки для счетчиков и мусора--

!Greasemonkey скрипты
[[YousableTubeFix|https://userscripts.org/scripts/show/13333]] - улучшение youtube, добавление ссылок на скачивание видео
[[Anti-Adblock Killer|http://userscripts.org/scripts/show/155840]] - убивает защиту сайтов от Adblock
!Скин для Firefox
--[[Classic Compac|https://addons.mozilla.org/en-US/firefox/addon/classic-compact/]]-- - выпилен, не поддерживается
[[Classic Theme Restorer|https://addons.mozilla.org/ru/firefox/addon/classicthemerestorer/]]
!Полезные твики
[[Click to Play|http://kb.mozillazine.org/Issues_related_to_plugins#Click_to_Play]] - блокировка плагинов по умолчанию, плагин запускается только после подтверждения
[[Plugin Check & Updates|http://www.mozilla.org/en-US/plugincheck/]] - проверка установленных плагинов на обновление
!Security
[[SQL Inject Me|https://addons.mozilla.org/ru/firefox/addon/sql-inject-me/]]
[[XSS Me|https://addons.mozilla.org/ru/firefox/addon/xss-me/]]
[[HackBar|https://addons.mozilla.org/en-US/firefox/addon/hackbar/]]
[[FoxyProxy Standard|https://addons.mozilla.org/ru/firefox/addon/foxyproxy-standard/]] - переключалка проксей
[[JavaScript Deobfuscator|https://addons.mozilla.org/en-US/firefox/addon/javascript-deobfuscator/]]
[[Mantra|http://www.getmantra.com/tools.html]]
!Firefox Portable
!!Что бы Firefox Portable работал одновременно с системным Firefox:
# Скопировать файл "~FirefoxPortable.ini" из "Other\Source" в директорию с "~FirefoxPortable.exe"
# Заменить в этом файле параметры на:
{{{
AdditionalParameters=-no-remote
DisableSplashScreen=true
AllowMultipleInstances=true
}}}
* Create VM from disk image by script:
{{{
#!/bin/bash
MACHINE=MyMachine2
MEMORY=4096
DISKFILE="disk-image.vmdk"
###

echo "Createing Machine" && \
VBoxManage createvm --name "$MACHINE" \
  --ostype Linux_64 \
  --register && \
\
echo "Setting up Machine" && \
VBoxManage modifyvm "$MACHINE" \
  --memory $MEMORY \
  --ioapic on \
  --cpus 3 \
  --rtcuseutc on && \
\
echo "Createing Storage Controller" && \
VBoxManage storagectl "$MACHINE" \
  --name SATA \
  --add sata && \
\
echo "Attaching Main Disk" && \
VBoxManage storageattach "$MACHINE" \
  --storagectl SATA \
  --port 0 --device 0 --type hdd --medium "$DISKFILE" && \
\
echo "Setup network" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "web,tcp,,7070,,80" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "ssh,tcp,,22222,,22" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "app,tcp,,8080,,8080" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "ap1,tcp,,9990,,9990" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "efs1,tcp,,61613,,61613" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "efs2,tcp,,8000,,8000" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "efs3,tcp,,8433,,8433" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "efa1,tcp,,7800,,7800" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "efa2,tcp,,6800,,6800" && \
VBoxManage modifyvm "$MACHINE" --natpf1 "efa3,tcp,,8200,,8200" && \
echo -e "You now can start machine for future use as: \nVBoxHeadless --startvm \"$MACHINE\""
}}}
* Run the VM
{{{
$ VBoxHeadless --startvm "MyMachine2"
}}}
* Wait some time for boot procedure, ssh to the VM from other terminal, make changes and gracefully shutdown it
{{{
$ ssh -p 22222 username@127.0.0.1
}}}
* Poweroff VM
{{{
$ VBoxManage controlvm "MyMachine2" poweroff
}}}
* Combine VM's images by exporting it
{{{
$ VBoxManage export "MyMachine2" -o mm.ova
}}}
* Unregister and delete VM
{{{
$ VBoxManage unregistervm "MyMachine2"
$ rm -rf /opt/qa/VirtualBox_VMs/MyMachine2
}}}
|Filesystem|c
|Description|Command|h
|Processes associated with a mounted file system|{{{sudo lsof <mount point>}}}|
|Change mount point|{{{sudo unmount <mount point>}}}<br>{{{sudo chfs -m <new mount point> <mount point>}}}<br>{{{sudo mount <new mount point>}}}|
|Create new partition|{{{# Create new volume group}}}<br>{{{sudo mkvg -y <vg name> <hd name>}}}<br>{{{# Create new 1G fs}}}<br>{{{sudo crfs -v jfs2 -g <vg name> -m <mount point> -A yes -p rw -a size=2G}}}<br>{{{# Mount new fs}}}<br>{{{sudo mount <mount point>}}}|
|Rename volume|{{{sudo chlv -n <new vl name> <old vl name>}}}|
|List of hard drives|{{{sudo lspv}}}|
|Hard drive info (also free/available space)|{{{sudo lspv <hd name>}}}|
|List of volume groups|{{{sudo lsvg}}}|
|List of logical volumes in volume group|{{{sudo lsvg -l <vg name>}}}|
|List of hard drives where vg located|{{{lsvg -p <vg name>}}}|
|Remove mounted logical volume|{{{sudo umount <mount point>}}}<br>{{{sudo rmfs <mount point>}}}|
|Remove logical volume|{{{sudo rmlv <lv name>}}}|
|Remove volume group|{{{sudo varyoffvg <vg name>}}}<br>{{{sudo exportvg <vg name>}}}|
|Extend volume group to other physical volume|{{{extendvg <vg name> <hd name>}}}<br>If we got error and want to force forget all data on <hd name>:<br>{{{extendvg -f <vg name> <hd name>}}}|
|List of physical volumes used by volume group|{{{sudo lsvg -p <vg name>}}}|
|List of physical volumes used by logical volume|{{{sudo lslv -m <lv name>}}}|
|Move logical volume to second physical volume in a volume group|Make copy (number 2) of lv on other pv<br>{{{sudo mklvcopy <lv name> 2 <second hd name}}}<br>Sync lv<br>{{{sudo syncvg -l <vl name>}}}<br>Remove copy (number 1) of lv from first pv<br>{{{sudo rmlvcopy <lv name> 1 <first hd name>}}}|

Links:
* [[Disk maintenance|https://www.ibm.com/developerworks/aix/library/au-aix-disk-maintenance/]]
* [[AIX Logical Volume Manager cheat sheet|http://www.datadisk.co.uk/html_docs/hp/aix_lvm.htm]]

|Network|c
|Description|Command|h
|Who's using my port|{{{lsof -i :<port nimber>}}}|
|What processes listen ports|{{{netstat -aAn|grep LISTEN|while read socket b c d puerto resto;do echo "PORT: "`echo $puerto|cut -f2 -d"."`  ------\>  `rmsock $socket tcpcb|sed 's/^.* \([0-9][0-9]*\)/PID \1/'`;done}}}|

!Resources|c
|Description|Command|h
|Available RAM (in megabytes)|{{{svmon -G -O unit=MB}}}|
|Summary of the top 15 processes using RAM|{{{svmon -Pt15 | perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}'}}}|

|Services|c
|Description|Command|h
|Start service|{{{sudo startsrc -s <service name>}}} or {{{sudo startsrc -g <services group}}}|
|Status of service|{{{sudo lssrc -s <service name>}}} or {{{sudo lssrc -g <services group}}}|
|Status of all services|{{{sudo lssrc -a}}}|

|Other|c
|Description|Command|h
|strace for process|{{{truss -a -e -f command arg1 agr2...}}}|
1. Качаем плагин [[тут|http://code.google.com/p/multimediaviewer/downloads/list]]. Распаковываем, устанавливаем.
2. Для работы необходим установленный [[Microsoft Visual C++ 2010 Redistributable|Microsoft Visual C++ Redistributable]]
3. Закидываем из дистра файл ''~MultiView.lua'' в ''%FARHOME%\Profile\Macros\scripts'' для работы хоткеев при проигрывании
http://chpock.appspot.com/
!Всунуть правило в начало цепи
{{{
sudo iptables -t nat -I OUTPUT 1 ....
}}}
Всовывает (-I - insert) правило с номером "1"
!Удалить правило по номеру
{{{
sudo iptables -t nat -D OUTPUT 1
}}}
Удаляет правило номер "1"
!Посмотреть список правил с номерами
{{{
sudo iptables -t nat -L --line-numbers
}}}
!Перенаправление внутреннего tcp трафика для определенного ip на другой хост
{{{
sudo iptables -t nat -A OUTPUT -p tcp -d 192.168.3.73 --dport 3710 -j DNAT --to-destination 10.20.1.34:3710
}}}
Перенаправляет трафик для 192.168.3.73:3710 на 10.20.1.34:3710
Никаких дополнительных включений форвардинга и т.д. - не требуется
!Перенаправить проходящий tcp трафик для определенного порта на localhost
{{{
sudo sysctl -w net.ipv4.conf.all.route_localnet=1
sudo iptables -t nat -I PREROUTING 1 -p tcp --dport 3710 -j DNAT --to-destination 127.0.0.1:3710
}}}
Перенаправляет трафик для порта 3710 на localhost:3710
Параметр {{{net.ipv4.conf.all.route_localnet}}} разрешает ломиться на localhost с других ip (не localhost) и ведро не будет дропать такие пакеты как martian. Работает только на ведре версии >= 3.6
В цупочке INPUT такие пакеты должны быть разрешены. По простому - должен быть разрешен INPUT ну нужный порт.
!Логирование
{{{
sudo iptables -t nat -I PREROUTING 1 -j LOG --log-prefix "NAT-PREROUTING: "
sudo iptables -t nat -I POSTROUTING 1 -j LOG --log-prefix "NAT-POSTROUTING: "
sudo iptables -t nat -I OUTPUT 1 -j LOG --log-prefix "NAT-OUTPUT: "
sudo iptables -I INPUT 1 -j LOG --log-prefix "INPUT: "
sudo iptables -I FORWARD 1 -j LOG --log-prefix "FORWARD: "
sudo iptables -I OUTPUT 1 -j LOG  --log-prefix "OUTPUT: "
}}}
{{{
dir /b /s /a-d c:\ | findstr /i ".doc$ .docx$ .xls$ .xlsx$ .jpg$ .jpeg$" | rar a arch @ -hpPASSWORD -m4 -ms*.jpg;*.jpeg -s
}}}
1. Microsoft Visual C++ 2010 Redistributable - [[x86|http://www.microsoft.com/ru-ru/download/details.aspx?id=5555]] | [[x64|http://www.microsoft.com/ru-ru/download/details.aspx?id=14632]]
1. [[Escaping strings for use at any command line|https://qntm.org/cmd]]
!Визуализация на JS
# [[VivaGraphJS|https://github.com/anvaka/VivaGraphJS]] - простая и легкая визуализация, примеры для графов из соц.сетей
# [[сборник|http://anvaka.github.io/graph-drawing-libraries/#/all]] - сборник фреймворков для визуализации графов на js
//{{{
// Implements the TiddlyWiki function saveOptionCookie(name) but saves the option server-side like other giewiki user options, not as a cookie
config.optionHandlers = {
	'txt': {
		get: function(name) {return config.options[name].toString();},
		set: function(name,value) {config.options[name] = value;}
	},
	'chk': {
		get: function(name) {return config.options[name] ? "true" : "false";},
		set: function(name,value) {config.options[name] = value == "true";}
	}
};

function saveOptionCookie(name)
{
	if (safeMode)
		return;
	var optType = name.substr(0,3);
	var handlers = config.optionHandlers;
	if (handlers[optType] && handlers[optType].get) {
		args = {};
		args[name] = handlers[optType].get(name);
		http.userProfile(args);
	}
}
//}}}
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

fieldset { padding:0px 8px 4px 4px; }

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
#mainMenu .tiddlyLinkNonExisting,
#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
#sidebarTabs .button {margin:0em 0.2em;	padding:0.2em 0.3em; display:block;}

#headerArea { margin: 0.5em; }
.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#topRightCorner { position:absolute; top:0.5em;right:0.9em; font-size: 1.1em; text-align: right; }

#leftSidebar {position:absolute; left:0; width:11em; padding:0.5em 0.5em 0.5em 0.5em;}
#mainMenu {text-align:right; line-height:1.6em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; margin-top:1em; font-size:.9em;}
#sidebarOptions {padding-top:0em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .searchButton {font-size: 1.11em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}

.listBreak div {margin:2px 0;}
.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}
.tabContents .tiddler {padding:0.1em 0.5em 0.5em 0.5em}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 12em;}
#wideArea {margin:1em 1em 0em 12em;}

.toolbar {text-align:right; font-size:.9em; float:right }
.commentToolbar {text-align:left; font-size:.9em;}

.tiddler {padding:0em 1em 1em 0em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}
.cxtoggle {width:1.0em; font-size:1.10em;}
.vttable td { padding: 0 0 0 0 }
.tdtoggle {width: 1.25em;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}
.tiddler .disabled {padding:0.2em 0.6em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0em 0em; 0em; 0em; font-size:1.0em;}
.viewer tr {vertical-align: top; }

.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

.commentTable {width:100%; font-size:1.0em;}
.commentTable td {vertical-align:text-top;}
.commentArea {border:0px; width:100%; font:inherit;}
.commentToolbar { padding-bottom:5px;}
.replyTD { padding-left:1.25em }
.buttonftr {position:relative; top:0em; right:0em; }
.linkbutton { font-weight: bold }
.siteMapTags { color: #ff0000 }
a.fieldsLink { margin-left:10px; margin-bottom:8px;}

.diffout { font-size:1.0em; font-family: courier; }
.diffminus { background-color: #d0ffdd; color: blue; }
.diffplus { background-color: #ffd0dd; color: darkred; }
/*}}}*/
<<options>>
!~OpenVPN
!!enable routing
{{{
echo 1 > sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -s 192.168.224.0/22 -o eth0 -j MASQUERADE
}}}
where:
* "192.168.224.0/22" - vpn subnet
* "eth0" - external interface
Да, любви нет.
Есть нейромедиаторы — дофамин и эндорфины, природные эйфоретики, чей выброс связывается с определённой особью-партнёром (а если быть точнее, то, скорее, с поведением определённой особи-партнёра).
Есть фенилэтиламин, действующий на ранних этапах.
Однако, повышенная выработка нейромедиаторов не может быть длительной, иначе человек быстро утратит способность к рациональному мышлению (а то и вовсе с ума спрыгнет), поэтому предполагается, что эта свистопляска в среднем длится несколько месяцев (вроде бы не более тридцати — отсюда и расхожая ванильная фразочка про любовь, живущую три года).
Потом якобы в игру входят вазопрессин и окситоцин (хотя его прямое воздействие на межполовую связь, называемую обычно "любовью", пока довольно сомнительно). Эти гормоны влияют уже больше на формирование так называемых "родительских" чувств.

Любви нет.
И, в сущности, нет ничего.
Нет тоски, нет ненависти, нет страха, нет привязанности: есть лишь гормональные всплески, обусловленные, по всей видимости, психологической реакцией особи на определённую комбинацию внешних раздражителей.
Реакции могут отличаться и зависят от личности, однако в целом они наверняка поддаются общей классификации. И, как следствие, их, пожалуй, можно назвать типовыми.
Мы разные так же, как и человечки из конструктора Лего.
И, в сущности, нет человека как такового: есть биоробот, организм, действующий в соответствии с заложенной в нём программой и — как это ни печально — осознающий себя.
И вот это самоосознание — это, наверное, самая грустная насмешка природы над нашим видом.
И проблема лишь в том, что от понимания всего этого не легче, а, пожалуй, лишь ещё более мерзко.

//источник неизвестен//
!MIUI v7
# Поставить [[SuperSu|http://4pda.ru/forum/index.php?showtopic=318487]] через recovery. Тестировалась v2.70
# Для инженерного меню, в котором можно править ~BandMode поставить ~ToolHero (4pda) (В начале вываливалась ошибка при попытке входа в меню ~BandMode, потом входить стало без ошибки, возможно после попытки выставить ~BandMode через меню по ''*#*#4636#*#*'')
# Поставить [[XposedInstaller_v2.6.1_MIUI_edition_by_SolarWarez_20151129.apk|http://4pda.ru/forum/index.php?showtopic=425052&st=13640#entry43431318]]. Из него поставить Xposed framework.
# Поставить extMIUIv7
# Поставить Xposed mod - ''MIUI Tweaks'' (на GP - платно, на 4pda есть старая версия)
** Настройки статусбара
*** Не обрабатывать цветные иконки (без ''MIUI Tweaks'' это можно сделать модом ''MIUI v7 notification icon fix 4.4.4'')
*** Сетка переключателей 4х3
*** Цвет шкалы сигнала сети
** Умное управление
*** Для "Рабочий стол"/"Статус бар"/"Локскрин" поставить реакцию на даблтап в "Выключить экран". (без ''MIUI Tweaks'' выключение даблтапом по статусбару можно сделать модулем ''~KnockOff'')
** Твики рабочего стола
*** Закрывать папки
*** Сетка рабочего стола 4х6
*** Убрать названия иконок нижнего бара (без ''MIUI Tweaks'' это можно сделать модулем ''Hide Dockicons Text'')
# Инсталяшка zip для recovery ~ViperFX брал [[тут|http://4pda.ru/forum/index.php?showtopic=663798&view=findpost&p=46371912]]. Дополнения->Некий софт от utalik ~ForMIUI.7z->viper_MIUI+v6-v7.zip
# Поставить и настроить [[Weather BZ|https://play.google.com/store/apps/details?id=pro.burgerz.weather]] для поставщика погоды виджетам MIUI.
# Импортировать тему [[YunOS|http://4pda.ru/forum/index.php?showtopic=555697&view=findpost&p=38774644]]
# После первоначальной настройки софта:
** Приложение Сервис->Разрешения->Управление автозапуском - Включаем мессенджеры, социалки и прочие резидентные приложения (в том числе и виджеты) в автозапуск.
** Настройки->Дополнительные настройки->Аккумулятор->Фоновый режим->Управления приложениями - Включить мессенджерам, социалкам и нужным резидентным приложениям доступ к инету в фоне.
** Настройки->Все приложения->По умолчанию - ставим приложения для действий.
# В приложении Загрузки->Настройки->Ограничение мобильного интернета->снять ограничение (иначе файлы больше определенного размера будут грузиться только по ~WiFi)
# Заморозить приложения в Titanium Backup
** Metok
** Mi Cloud (''не должно быть аккаунта в mi cloud'')
** Mi Credit
** Mi Drop
** Mi Voice
** Желтые страницы
** Заметки
** Калькулятор
** Отзывы
** Почта MIUI
** Принтер 1
** Сервисы Xiaomi
!Перед сбросом
# Nova Launchar Prime
** Забэкапить настройки, положить в сейф
# DW Contacts & Phone Pro
** Забэкапить настройки, положить в сейф
** Общие настройки
*** Фильтр контактов->Настроить
*** Формат имени->Сначала Фамилия
*** Изображение контакта в ~HD->Включить
*** Настройка для левшей->Отключить
*** Показывать алфавитный список->Включить
*** Работать в фоне->Включить
*** Автоматический поворот->Отключить
** Настройки темы
*** Основная тема->Black
*** Забл.2пальц.слайдинг->Включить
** Телефон
*** Включить слайдинг->Отключить
*** Запускать телефон без клавиатуры->Включить
*** Кнопка Назад прячет номеронабератель->Отключить
*** Показывать цифры на клавиатуре->Включить (из-за этого вроде как глюк: нельзя включить цифровую клаву в режиме телефона)
*** Выход по завершении вызова->Включить
*** Тактильная отдача->Включить
*** Показать журнал сообщений->Отключить
** Контакты
*** Сортировка контактов->Фамилия
*** Включить слайдинг->Отключить
** Виджет вызова
*** Включить виджет вызова->Отключить
** Настройки панели вкладок
*** Активировать и сортировать
**** Телефон
**** Контакты
**** Панель инструментов
*** Открывать по умолчанию->Телефон
*** Всегда запускаться с фкладкой по умолчанию->Включить
*** Скрыть метки в панели вкладок->Включить
** Настройки фоновой службы
*** Разрешить фоновую загрузку данных->Отключить
!Системное
# [[LuckyPatcher|http://4pda.ru/forum/index.php?showtopic=298302]] - для взломанного маркета и отключение проверки лицензии у приложений
# [[Freedom|http://4pda.ru/forum/index.php?showtopic=411446]] - для покупок внутри приложений
!Приложения
# [[App&Game 4PDA|http://4pda.ru/forum/index.php?showtopic=275433]] - Установка приложений из 4pda (external)
** Настройки->Основные->Завершать службу
** Всплывающий левый фрейм->Нажмите для авторизации
# ~ToolHero (4pda) - Системная инфа и инженерное меню для камней MTK. Обязательно для прошивки MIUI, тут можно отредактировать ~BandMode.
# Titanium Backup Pro (4pda) - брать ~MoDaCo Plus версию
# DW Contacts & Phone Pro (4pda)
# Gmail
** В настройках убрать "Оповещения" и "Синхронизация Gmail"
** Добавить аккаунт exchange
*** Включить синхронизацию
*** Включить нотификацию
# Google Keep
# Google Maps
# ~YouTube
# Coub
# Telegram
** Активировать
# [[Kate Mobile|http://katemobile.ru/]] (external)
** Залогиниться
** Настройки->Уведомления
*** Регулярные обновления
**** Включить
**** Интервал 15м
**** Убрать "Только ~WiFi" (если инет халявный)
**** Уведомлять о сообщениях/ответах, новости - отключить
** Настройки->Синхронизация контактов.
*** Включить
*** Убрать "Только тех, у кого есть телефонный номер"
*** Выбрать большое фото для синка
** Настройки->Служебное
*** Размер кэша картинок в 30мб
*** Выбрать кастомные каталоги для кэша аудио/пикчей/видео
# Metal Pro (4pda) (external)
** Авторизоваться под Facebook
*** Настройки->Уведомления->Включить уведомления
*** Настройки->Уведомления->Частота синхронизации 30мин
*** Настройки->Interface->Включить ~MetalBar - отключить
*** Настройки->Доступ Facebook->Открывать ссылки в приложении - отключить
** Авторизоваться под Twitter
** Настройки->Включить уведомления
# Skype
** Авторизоваться
# QR Droid
# Viber
** Авторизоваться
** Настройки->Общие->Показывать значек состояния
# Viber Candy Mania
# ~WatsApp
** Авторизоваться
# Privat24
** Авторизоваться
# Firefox
** Параметры->Поиск - выпилить оттуда яндекс, включить поисковые предложения
** Параметры->Дополнительно->Восстановление вкладок - включить
** Поставить uBlock, вырубить галку "Разрешить рекламу"
# ~EBookDroid
# (?) WPS Office - просмотр документов ms office
# ~BlaBlaCar
** Авторизоваться в vk
# Shazam Encore (4pda) - Шазам без рекламы
# 2gis
** Загрузить карту
# Яндекс.Рассписание
# Cool Reader
# ~BazQux Reader & News+
** Настройки->Синхронизация
*** Автообновление->Только ~WiFi
*** Лимит статей->10000
*** Синхр.избранное
*** Синхр.при запуске->Только ~WiFi
** Настройки->Уведомления->Off
** Настройки->Автономное чтение
*** Автономный режим->Отключить
*** Лимит статей->Все непрочитанные
*** Загрузить полное содержание->Отключить
** Авторизоваться
# ES Проводник
# Netmonitor
# ~TeamViewer
** Авторизоваться
# --~AnyBalance-- (не надобно пока)
** --Настроить--
# --Мой Киевстар-- (хня)
** --Авторизоваться--
** --Добавить виджет--
# ~F-Droid (4pda)
** Настройки->Интервал автоматического обновления - отменить
** Репозитории->Включить все
# --Readability-- (перешел на Pocket)
** --Авторизоватся--
# Pocket
** Авторизоваться
# Stellio
** Настройки->Управление->Скробблинг - врубить
** Настройки->Плагины->Поставить ВК
** Зайти приложение ключа и плагина вк, отпетить "скрыть приложение"
# Stellio ВКонтакте
** Авторизоватся
** Настройки->Вконтакте->Трансляция - поставить
# Simple Last.fm Scrobbler
** Авторизоватся в last.fm
# --WPS Office - документы офиса-- - не нужен, вместо него - оффициальные Word\Excel\~PowerPoint от ms
# Microsoft Excel
# Microsoft Word
# Microsoft ~PowerPoint
# Resilio Sync - синхронизация
** Настроить папки
# ~AndroidTS GPS Test - тест жпс
# Screencap - скриншотилка кастомная
# Сейф+
# Сейф+ синхронизатор
** Подключить синхронизацию с google drive
# Виджет Погода и Часы - Android
# Ultra Wave живые обои
# ~TeslaUnread for Nova Launcher (4pda)
** Активировать нотификацию
# Nova Launchar Prime (4pda)
** Импортировать настройки из сейфа
# Полиглот (4pda) 
# ~DigiCal (?)
# [[RealCalc Scientific Calculator|http://4pda.ru/forum/index.php?showtopic=148582]] - калькулятор
# [[Mobile Doc Scanner|http://4pda.ru/forum/index.php?showtopic=339715]] - сканер документов
# --[[Gravity Screen - On/Off|http://4pda.ru/forum/index.php?showtopic=465150]] - авто включение/отключение тела, ставить версию с 4pda-- (не удобно)
# [[MX Player|http://4pda.ru/forum/index.php?showtopic=253883]] - ставить с сборку с 4pda либо ставить кодеки отдельно оттуда же. Офф с маркета не поддерживает аудио в формате ~AC-3.
** Настройки->Декодер->Включить HW+ декодер
# [[Conversations|http://4pda.ru/forum/index.php?showtopic=579183]] (не опробовано) xmpp-client, ставить из f-droid

!Tweaks
# Инженерное меню: ''*#*#3646633#*#*''
# Вырубить неиспользуемые частоты:
## Для GSM оставить ''~EGSM900'' / ''~DCS1800''. Вырубить: ''~PCS1900'' / ''~GSM850''
## Для UMTS оставить ''~WCDMA-IMT-2000''. Вырубить: ''~WCDMA-GSM-900'' (? тест-драйв без этой частоты в процессе)
!!Setup Keys
Generate key:
{{{
ssh-keygen -t rsa
}}}
Transfer key to the remote host
{{{
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<remote host>
}}}
!!Tunneling
!!!Local port forwarding
Command:
{{{
$ ssh -L <local port>:<to host>:<to port> <user>@<remote host>
}}}
* Bind <local port> on local machine
* Connect via SSH to <remote host> as user <user>
* Tunnel connection from <local port> on local machine to <to host>:<to port> over SSH. Connection to <to host>:<to port> will be made from <remote host>.
!!!Remote port forwarding
Command:
{{{
$ ssh -R [[bind host/ip]:]<bind port>:<to host>:<to port> <user>@<remote host>
}}}
* Connect via SSH to <remote host> as user <user>
* Bind <bind port> at <remote host>
** By default, port bound on {{{localhost}}}
** To bind all interfaces we can use {{{*}}} as <bind host/ip> (on shell command line we should use {{{\*}}} to avoid expansion
** To bind all ip4v interfaces we can use {{{0.0.0.0}}} as <bind host/ip>
* Tunnel connection from <bind port> on <bind host/ip> of <remote host> to <to host>:<to port>
By default, sshd allow to bind only on {{{localhost}}}. To enable bind on any interface we should edit {{{/etc/ssh/sshd_config}}} and add line:
{{{
GatewayPorts clientspecified
}}}
or
{{{
GatewayPorts yes
}}}
!!!How to start tunnel without shell and detach
{{{
$ ssh -N -R ....
Press <Ctrl-Z>
$ bg
$ disown -h
}}}
or
{{{
$ ssh -nNT -R ...
}}}
!!!Autossh - reconnect
{{{
autossh -M 0 -q -f -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "ExitOnForwardFailure yes" <-L/-R options, user@host>
}}}
!!!How to bypass disabled '~GatewayPorts' (not verified)
* First forward to temporary port (e.g. 10080) on loopback device on the remote machine, then use local forward there to redirect port 10080 to 80 on all interfaces:
{{{
$ ssh -A -R 10080:localhost_or_machine_from:80 user@remote.tld "ssh -g -N -L 80:localhost:10080 localhost"
}}}
!Guides
* [[Air Iop guide|https://www.wakfu.com/en/forum/45-iop/201029-dragon-pig-air-fire-iop-guide]]
|Description|Command|h
|Get the information of package before installing|{{{rpm -qip <rpm file>}}}|
|Install|{{{rpm -ivh <rpm file>}}}|
|Install without dependencies|{{{rpm -ivh --nodeps <rpm file>}}}|
|Upgrade package|{{{rpm -Uvh <rpm file>}}}|
|Remove a package|{{{rpm -evv <package name>}}}|
|Remove a package without dependencies|{{{rpm -ev --nodeps <package name>}}}|
|Check dependencies|{{{rpm -qpR <rpm file>}}}|
|List all files of an installed package|{{{rpm -ql <package name>}}}|
|List of installed packages|{{{rpm -qa}}}|
|List of recently installed packages|{{{rpm -qa --last}}}|
|Query a file that belongs which package|{{{rpm -qf <absolute file path>}}}|
|Query a information of installed package|{{{rpm -qi <package name>}}}|
!Расчет выгодности рун
!!!!Парзинг гос цен рун в сере
{{{
foreach {- r c} [regexp -all -inline {([^\n]+? \[\d+?\])\n\s*?(\d+?)\s} $a] { set ru($r) $c }
array names ru
unset ru
}}}
!!!!Парзинг цен рун в ксенах
{{{
set lvl 11;foreach {- r1 r2 r3 r4 c1 c2 c3 c4} [regexp -inline -all {(Руна[^\n]+?)\n\s+(Руна[^\n]+?)\n\s+(Руна[^\n]+?)\n\s+(Руна[^\n]+?)\n(\d+?)\s[^\n]+?\n\s+(\d+?)\s[^\n]+?\n\s+(\d+?)\s[^\n]+?\n\s+(\d+?)\s} $a] { set rk($r1\ \[$lvl\]) $c1; set rk($r2\ \[$lvl\]) $c2; set rk($r3\ \[$lvl\]) $c3; set rk($r4\ \[$lvl\]) $c4; }
array names rk
unset rk
}}}
!!!!Цена сера/ксен
{{{
foreach rn [array names rk] { set rd($rn) [expr { 1.0*$ru($rn)/(1.0*$rk($rn)) }] }
}}}
!!!!Вывод результата
{{{
foreach {rn cn} [lsort -real -stride 2 -index 1 -decreasing [array get rd]] { puts "$rn $cn $rk($rn) $ru($rn)" }
}}}
!Расчет стоимости ништяков за монеты элитного турнира
{{{
apply {{} { unset -nocomplain i c r; while { [incr i] < 100 } { if [info exists c] { set c [expr { 1.5*$c }] } { set c 10 }; lappend r [expr round($c)] }; return $r }}
}}}
!Необходимый софт
* SP ~FlashTool, MTK Droid tools, драйвера -> [[4pda|http://4pda.ru/forum/index.php?showtopic=663798]]->Драйвера и утилиты
!TWRP 2.8 для A5k LP
* Берем рековери [[тут|http://4pda.ru/forum/index.php?showtopic=663798&st=140#entry41715193]]
* Прошиваем через SP FlashTool только 1 раздел с рековери
* Передергиваем USB к компу
* Держим одновременно vol+ vol- power
* После лого леновы power можно отпустить
* После лого twrp можно отпустить vol+ vol-
!Backup
* Подключаем тел в режиме "~USB-накопитель", включаем "Отладка по USB"
* В ~MtkDroidTools выбираем "Карта блоков"->"Создать scatter файл". Сохраняем файл не меняя имени.
* Запускаем SP ~FlashTool->кнопка "Scatter-loading". Выбираем свой scatter.
* Заходим во вкладку "Readback"
* Нажимаем кнопку "Add"
* Даблкликаем на наш блок, указываем куда сохранять файл.
* В следующем окне, в "lenght" блока указываем адрес "linear_start_addr" блока cache из scatter-файла.
* Нажимаем кнопку "Read back"
* Отсоединяем тел. Выключаем его. В выключенном состоянии подсоединяем USB. Блок пойдет читаться.
* Дожидаемся зеленого кружечка. Отключаем ~USB. Включаем тел.
* Дожидаемся загрузки.
* Запускаем ~MtkDroidTools. Подключаем USB.
* Переходим во вкладку "root, backup, recovery"
* Нажимаем кнопку "Создать бэкап из ~ROM_ флэштула" и выбираем наш ~ROM_ файл.
* На вопрос про recovery ответить "нет". В предложении выбрать файл - нажать "Отмена".
* В каталоге "backups" будет создан бэкап. Переименовать в нем файл "factory_~NONmodified_recovery.img" в "recovery.img"
!Регион для прошивки
* ''####5993#'' - посмотреть текущий регион
* ''####682#'' - изменить регион
* [[Доп.инфа|http://lenovo-forums.ru/topic/8642-%D1%81%D0%BC%D0%B5%D0%BD%D0%B0-%D1%80%D0%B5%D0%B3%D0%B8%D0%BE%D0%BD-%D0%BA%D0%BE%D0%B4%D0%B0-%D0%B4%D0%BB%D1%8F-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2-%D0%BB%D0%B5%D0%BD%D0%BE%D0%B2%D0%BE-instruction-for-country-code-lenovo-device/]]
!Список отключенных RSS
!!Android
* 4PDA - Новости
** http://4pda.ru/software/feed/
* 4PDA - Игры
** http://4pda.ru/games/feed/
* ~DimonVideo - обменник файлами
** http://dimonvideo.ru/uploader/192/rss.xml
* ~DimonVideo - файлы
** http://dimonvideo.ru/android/rss.xml
!!Lenovo ~A5K
* Обсуждение с 4pda
* Прошивка с 4pda
!!Vape
* http://www.ecigtalk.ru/external.php?type=RSS2
* http://vapers.in.ua/index.php?forums/-/index.rss
* http://ekurilka.com.ua/external.php?type=RSS2
!!Политика
* Украинская правда
** http://www.pravda.com.ua/rss/
!!Community
* ПростоНаука
** http://postnauka.ru/feed
!!Dingo A320
* http://feeds.feedburner.com/ru_dingoo
!~How-To
<<tagging how-to>>
!Заметки
<<tagging notes>>
!Памятки
<<tagging quicknote>>
!Журнал
<<tagging journal>>
!Интересные лекторы
* Эмиль Ахмедов (Тофикович) - физик, теория относительности, квантовая
* Андрей Макаров - философ, психолог, культуролог - забавные лекции, большей частью тем, как он издевается над людьми в аудитории
* Олег Верходанов (Васильевич) - физика, космос, космология
* Василий Ключарев - психо-невролог
* Вячеслав Дубынин - физиология мозга
!Web сервисы
* [[Yahoo! Pipes|http://pipes.yahoo.com/pipes/]]
** [[Пример|http://splogmaster.ru/yahoo-pipes/rabochaya-sxema-i-primer-grabbera-vsego-sajta-v-yahoo-pipes]] разбора сайта
** [[Пример|http://www.daybarr.com/blog/yahoo-pipes-tutorial-an-example-using-the-fetch-page-module-to-make-a-web-scraper]] пайпа, который преобразует форум в RSS
** [[Спецификация RSS 2.0|http://beshenov.ru/rss2.html]]
* Автоматическое распознавание кодировки кириллицы - [[ссылка|http://www.artlebedev.ru/tools/decoder/]], [[ссылка|http://2cyr.com/decode/index.php]]
* [[Подсветка|http://tohtml.com/]] языков программирования в виде HTML
* [[Диапазон IP провайдера|http://2ip.com.ua/ru/services/information-service/provider-ip]]
* [[Город2IP|http://ipgeobase.ru]] - Поиск сетей, которые есть в городе
* [[ipinfo.io|http://ipinfo.io/]] - Основная инфа про геолокацию и провайдера
* [[Звертання. Правопис імен та по батькові.|http://www.slovnyk.ua/services/names.php]]
* [[Отмазки для опоздания на работу|http://vyhodnoi.by/]]
* [[apk Downloader|http://apps.evozi.com/apk-downloader/]]
* Определение модели телефона по IMEI:
** [[http://xsms.com.ua/phone/imei/|http://xsms.com.ua/phone/imei/]]
** [[http://mobile-catalog.info/imei_search.php|http://mobile-catalog.info/imei_search.php]]
** [[http://sndeep.info/ru|http://sndeep.info/ru]]
** [[http://www.imei.info|http://www.imei.info]]
** [[Найти контрольную сумму IMEI|http://www.gsmlab.com/solutions/imei.gsm]] ([[тут|http://the-mostly.ru/misc/kak_uznat_imei_telefona_i_chto_eto_takoe.html]], [[тут|http://www.imei.info/calc]] онлайн)
* [[Местоположение БС|http://xinit.ru/bs/]], [[CellID Finder|http://cellidfinder.com/]]
* СМС
** [[sms.ru|http://sms.ru]] - отправка халявных смс самому себе, хорошый API
** [[turbosms.ua|http://turbosms.ua/]] - смс-гейт
** [[smsc.ru|http://smsc.ru/]] - смс-гейт, HLR/Ping0
* Google иконки: [[разные|http://www.lass.it/Web/viewer.aspx?id=4]], [[виджетов|https://sites.google.com/site/gmapicons/]], [[весь сборник|http://tancro.e-central.tv/grandmaster/markers/google-icons/]]
** Конверт png->ico - [[http://icoconvert.com/|http://icoconvert.com/]]
* Визуализация explain от postgresql [[http://explain.depesz.com|http://explain.depesz.com]]
* ~P2P
** [[Смена i2p хоста/туннеля|https://www.reddit.com/r/i2p/comments/2rufmi/configuring_i2p_for_a_disk_image_that_will_run_on/]] 
* Хостинг:
** [[На базе дропбокса|http://brace.io/]], [[На базе дропбокса|https://900dpi.com/]]
* Online песочницы для анализа malware
** [[PayloadSecurity|https://www.hybrid-analysis.com/]] - очень клёвый overview
** [[Malwr|https://malwr.com/submission/]] - довольно детальный отчет
** [[Anubis|https://anubis.iseclab.org/]] - слабенький отчет
* Гаджетошопы
** [[http://www.gearbest.com/|http://www.gearbest.com/]]
** [[http://dx.com/|http://dx.com/]]
** [[http://www.tinydeal.com/|http://www.tinydeal.com/]]
** [[http://www.coolicool.com/|http://www.coolicool.com/]]
** [[http://www.geekbuying.com/|http://www.geekbuying.com/]]
** [[http://www.banggood.com|http://www.banggood.com]]
** ?[[http://www.ahappydeal.com/|http://www.ahappydeal.com/]]? ?[[focalprice.com|focalprice.com]]?
* Китайские магазы электронных сигарет
** [[www.healthcabin.net|http://www.healthcabin.net]]
** [[www.heavengifts.com|http://www.heavengifts.com/]]
** [[www.fasttech.com|https://www.fasttech.com/category/3099/e-cigarettes]]
** [[www.gearbest.com|http://www.gearbest.com/electronic-cigarettes-c_11281/]]
** [[keeppower.com.ua|http://keeppower.com.ua/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%86%D0%B8%D1%8F/%D0%B0%D0%BA%D0%BA%D1%83%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D1%8B-%D0%B1%D0%B5%D0%B7-%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D1%8B-14500--16340---18350-18500-18650-26650/imr-18650]] - высокотоковые аккумы, другие аккумы, повербанки
* Забрать музыку из плейлиста вк
** http://genaev.com/vmd
* self-hosted file sync
** [[syncthing|https://syncthing.net/]] - open source
** [[BitTorrent Sync|https://www.getsync.com/]]
* Готовые VM
** Windows 7/8/10 - https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
*** Добавить Common shared folder, вынести ярлык на десктоп
*** Поставить ~VMware Tools
*** Убрать (поменять) пароль
*** Поставить Process Hacker (с kernel driver)
*** Скопировать Process Explorer в папку Windows, назначить ему быть таск менеджером
*** Скопировать портабельный Far Manager
*** Отключить уход в сон и любое другое энергосбережение
*** Поставить ~WindowsSDK
**** В него входит Application Verifier - возможность запуска приложений в ограниченой памяти
**** v.7.1 для win7 - https://www.microsoft.com/en-us/download/confirmation.aspx?id=8279
** Linux/~FreeBSD - http://www.osboxes.org/
*** SUSE 11 ~SP4 на ~VMware (при установке офф дистра с iso)
**** Не инсталить предлагаемые vmware vm-tools, проследить что бы оригинальный iso был подключен как cd
**** проинсталить open-vm-tools командой: ''zypper in -l -y open-vm-tools open-vm-tools-desktop''
**** Далее, монтируем предлагаемые тулзы, копируем ~VMwareTools*.tar.gz
**** Распаковываем его: tar xf ~VMwareTools*
**** Запускаем из по рута: vmware-tools-distrib/vmware-install.pl
**** Под конец там спросят ходим ли мы автоматом билдить модули ядра, по дефолту та "no", ставим "yes"
**** удалить все из /mnt (по идее, там должен быть каталог hgfs)
**** в fstab прописать: ''.host:/ /mnt vmhgfs allow_other 0 0''
**** Если что-то не работает: еще раз проверяем, что shared folders включены в настройках vm
*** SUSE 12 ~SP2 на ~VMware (установка с офф дистра iso)
**** open-vm-tools* уже установлены, потушить машину и включить shared folders
**** врубить дополнения из меню vmware, забрать оттуда *tar.gz, распаковать, запустить на инсталяцию
**** ответить "yes" когда спросит перезаписать файлы от vmhgfs, и "yes" для модулей ядра
**** проверить, что все смонтировалось в /mnt/hgfs, размонтировать, удалить /mnt/hgfs
**** в fstab прописать: ''.host:/ /mnt fuse.vmhgfs-fuse allow_other 0 0''
*** Ubuntu на ~VMware
**** Сделать "New VM", указать существующий диск - скачаный
**** Запустить, зайти с паролем "osboxes.org", поменять пароль
**** Делаем "sudo apt-get update", "sudo apt-get install open-vm-tools open-vm-tools-desktop"
**** в fstab прописать "''.host:/ /mnt fuse.vmhgfs-fuse allow_other 0 0''"
**** --В меню "~VM->Install ~VMware tools". Откроется директория с тулзами.--
**** --Правой кнопкой на "~VMwareTools...tar.gz", "Extract To..." - распаковать (можно на десктоп)--
**** --Идем на десктоп в распакованную директорию, делаем "sudo ./vmware-install.pl"--
**** Отключаем авто-логаут и скринсейвер: ''System Settings -> Personal -> Brightness & Lock -> ...''
*** Lunux VM
**** apt-get install mc htop
* Рисование диаграмм
** [[yEd Graph Editor|https://www.yworks.com/products/yed]] - приложение
** [[draw.io|http://draw.io]] - онлайн, есть расширение для хрома
** [[www.websequencediagrams.com|https://www.websequencediagrams.com/]] - онлайн
* Ссылки
** [[Установка Win7+flash для полных нубов|http://prostocomp.com/lessons/35-medium/71-ustanovka-windows-7-s-usb-fleshki.html]]
** [[µTorrent|http://forum.ru-board.com/topic.cgi?forum=5&topic=46696]] - портативная версия с вырезанной рекламой
** [[Windows Mail|http://ogri.me/ru/work/computer-service/157-aktivizatsija-windows-mail-v-windows-7]] - Активация Windows Mail для win7
!Иконки
*  [[Iconizer|http://iconizer.net/]] - генерация иконок
* [[Набор fatcow|http://www.fatcow.com/free-icons]] иконок
* [[Набор famfamfam|http://www.famfamfam.com/]] иконок
* [[Набор|http://p.yusukekamiyamane.com/]] иконок от Yusuke Kamiyamane
* [[Набор Tango|http://tango.freedesktop.org/Tango_Icon_Library]] иконок
!Online доки
* [[HTML, CSS, DOM, JS, jQuery|http://devdocs.io/]]
!Notebook
* Дрова на bluetooth - [[Qualcomm atheros AR3012 8.0.1.305|http://www.atherosdriver.com/atheros-bluetooth-drivers-AR3012-windows8-64bit-download-8-0-1-305.html]]
!Bandaged ~BetterDiscord
[[https://github.com/rauenzi/BetterDiscordApp|https://github.com/rauenzi/BetterDiscordApp]] - репо
[[https://github.com/rauenzi/BetterDiscordAddons|https://github.com/rauenzi/BetterDiscordAddons]] - сборник плагинов
[[https://github.com/mwittrien/BetterDiscordAddons|https://github.com/mwittrien/BetterDiscordAddons]] - сборник плагинов
[[https://github.com/Strencher/BetterDiscordStuff|https://github.com/Strencher/BetterDiscordStuff]] - сборник плагинов
!webhooks
[[https://birdie0.github.io/discord-webhooks-guide/|https://birdie0.github.io/discord-webhooks-guide/]] - информация про вебхуки, описание и формат возможных полей
!embed
[[https://leovoel.github.io/embed-visualizer/|https://leovoel.github.io/embed-visualizer/]] - визуальный редактор embed сообщений
* [[Я иду искать|https://ru.wikipedia.org/wiki/%D0%AF_%D0%B8%D0%B4%D1%83_%D0%B8%D1%81%D0%BA%D0%B0%D1%82%D1%8C]], 2019, фильм. Девушка выходит замуж и, что бы попасть в семью, ей нужно поиграть с семьей. Ей выпадает игра в прядки. Когда она прячется в доме, а вся семья пытается её найти и убить. По сути - черный ужастик со слабым закосом на комедию. Не особо интересно, можно посмотреть от нечего делать. Середнячок.
* [[Энн|https://ru.wikipedia.org/wiki/%D0%AD%D0%BD%D0%BD_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2017-2019, e01-e01s01 e01-e10s02 Про девочку, которая была в приемной семье, но её удочерили. Описание её жизни в школе. Не особо интересно, можно смотреть от нечего делать. Середнячок.
* [[Разрабы|https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D1%8B]], 2020, сериал, e01-e08s01. Несмотря на название, к разрабам - практически никакого отношения не имеет. Обыгрывается идея детерминизма и что частная фирма на основе квантового компьютера, основываясь на полных данных о состоянии вселенной, может проигрывать как прошлое, так и будущее. В этом всем - немного детектива, драмы и мистики. Много чего притянуто за уши. Никакой ценности, окромя как времяубивания - не имеет. Середнячок.
* [[Машинист|https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%88%D0%B8%D0%BD%D0%B8%D1%81%D1%82_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)]], 2004, фильм. История работяги у которого проблемы со сном. Из-за этих проблем - закручивается его сюжет. Очень сильно похоже (вернее, даже калька) на [[Бойцовский Клуб|https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%B9%D1%86%D0%BE%D0%B2%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BB%D1%83%D0%B1_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)]], но не так зрелищно и безбашенно. Середнячок.
* [[Тьма|https://ru.wikipedia.org/wiki/%D0%A2%D1%8C%D0%BC%D0%B0_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2017-2019, сериал, e01-e10s01 e01-e08s02, С одной стороны - сериал про расследование пропажи детей. С другой стороны - сериал про путешествиников во времени. То бишь - смесь детектива, фантастики и мистики. История - хороша, параллельно идут события из разных временных континуумов. Ляпов - минимум в первом сезоне, чем, собственно оно и интересно. Во втором сезоне - логических ляпов уже намного больше. Но, все равно, смотреть очень интересно. Очень годно.
* [[Пацаны|https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%86%D0%B0%D0%BD%D1%8B_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2019, сериал, e01-08s01, Немного трешевый сериал, где супер-герои - это не позитивные герои, а мудаки, которые только на публику играют свою позитивность. В это время, несколько обычных людей собрались вместе для того, что бы вывести супер-героев на чистую воду, а еще лучше, уничтожить. Веселый сериал. Годно.
* [[Американский вандал, сезон #2|https://en.wikipedia.org/wiki/American_Vandal]], 2018, сериал, сезон 2. Как и в первой части, идет расследование какой-то хрени в школе. В этот раз - говнозамеса. Забавно, необычно и интересно. Годно.
* Трагедия в Уэйко, 2018, док.сериал, e01-06s01. Осада сектантов ФБРовцами. Очень растянуто, до того как смотреть, нужно прочитать про что оно - [[Осада «Маунт Кармел»|https://ru.wikipedia.org/wiki/%D0%9E%D1%81%D0%B0%D0%B4%D0%B0_%C2%AB%D0%9C%D0%B0%D1%83%D0%BD%D1%82_%D0%9A%D0%B0%D1%80%D0%BC%D0%B5%D0%BB%C2%BB]]. Стоит посмотреть только как на памятник человеческого тупизма. Середнячок.
* ~AlphaGo, 2017, док.фильм. Про матч программы ~AlphaGo с профессионалом го. Годно.
* [[Дэдпул 2|https://ru.wikipedia.org/wiki/%D0%94%D1%8D%D0%B4%D0%BF%D1%83%D0%BB_2]], 2018, фильм. Сюжет дебильный и притянутый за уши. Намного хуже чем 1ая часть. Середнячок.
* [[Хороший доктор|https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D1%80%D0%BE%D1%88%D0%B8%D0%B9_%D0%B4%D0%BE%D0%BA%D1%82%D0%BE%D1%80_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2017, сериал. Группа хирургов в клинике разбираются со сложными диагнозами и способами лечения. Очень похоже на [[Доктор Хаус|https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BA%D1%82%D0%BE%D1%80_%D0%A5%D0%B0%D1%83%D1%81]], но без такого клевого сарказма. Главный герой сериала - аутист, и на нем строится весь сюжет. Все не напряжно, но и совсем не ново. Для разнообразия - можно посмотреть. Середнячок.
* [[Американский вандал|https://en.wikipedia.org/wiki/American_Vandal]], 2017, сериал. Ржачная пародия на детективы. Старшекласники ведут расследование о том, кто нарисовал краской 27 изображений МПХ на машинах учителей. Годно.
* [[Охотник за разумом|https://ru.wikipedia.org/wiki/%D0%9E%D1%85%D0%BE%D1%82%D0%BD%D0%B8%D0%BA_%D0%B7%D0%B0_%D1%80%D0%B0%D0%B7%D1%83%D0%BC%D0%BE%D0%BC]], 2011, сериал. Вроде бы как документальный сериал про группу агентов ФБР, которые пытаются делать профайлинг преступников, которые совершили преступления с особой жестокостью и изучают поведение психов-серийных убийц. Немного похоже на [[Мост|https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D1%81%D1%82_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB,_%D0%A8%D0%B2%D0%B5%D1%86%D0%B8%D1%8F_%E2%80%94_%D0%94%D0%B0%D0%BD%D0%B8%D1%8F)]], но детектив не столь запутанный и больше упор на изучение психов. Годно.
* [[Опасный метод|https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D0%B0%D1%81%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4]], 2011, фильм. Про становление К.Г.Юнга и его взаимотношения с З.Фройдом. Сюжет скучноват и кажется какой-то идиотской сказкой. Но оказывается, что все примерно так и было. Эти товарищи действительно знатно ебанутые. Фильм интересен только с документальной точки зрения и для понимания сути психоанализа/психоаналитиков. Середнячок.
* [[Детективное агентство Дирка Джентли|https://ru.wikipedia.org/wiki/%D0%A5%D0%BE%D0%BB%D0%B8%D1%81%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B4%D0%B5%D1%82%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B5_%D0%B0%D0%B3%D0%B5%D0%BD%D1%82%D1%81%D1%82%D0%B2%D0%BE_%D0%94%D0%B8%D1%80%D0%BA%D0%B0_%D0%94%D0%B6%D0%B5%D0%BD%D1%82%D0%BB%D0%B8_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2016-2017, сериал. Крышесносный и нескучный сюжет. Похоже на [[Американских богов|https://ru.wikipedia.org/wiki/%D0%90%D0%BC%D0%B5%D1%80%D0%B8%D0%BA%D0%B0%D0%BD%D1%81%D0%BA%D0%B8%D0%B5_%D0%B1%D0%BE%D0%B3%D0%B8_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], но нет такого адского трэша. Второй сезон - продолжение безбашенного трэша с юмором. Годно.
* [[Карточный домик|https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%80%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D0%B4%D0%BE%D0%BC%D0%B8%D0%BA_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2013-2017, сериал. Про политику в америке. Очень годно.
* [[Американские боги|https://ru.wikipedia.org/wiki/%D0%90%D0%BC%D0%B5%D1%80%D0%B8%D0%BA%D0%B0%D0%BD%D1%81%D0%BA%D0%B8%D0%B5_%D0%B1%D0%BE%D0%B3%D0%B8_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2017, сериал. Крышесносный сюжет, куча трэша и черноты. Но не скучно. Годно.
* [2017-05-21] [[Экзамен|https://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2009)]], 2009, фильм. Кандидатов на работу собирают в одну комнату и предлагают пройти экзамен. Чуть прикольный, но больше - банальный. Середнячок.
* [[Мост|https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D1%81%D1%82_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], сериал, e01-10s01, e01-10s02, e01-10s03. Детектив про расследование полицейских. В каждом сезоне - своя очень запутанная история. Но из-за того, что истории очень запутаны - очень много логических ляпов. В общем, похоже на 2ой сезон [[Настоящего детектива|https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D1%82%D0%BE%D1%8F%D1%89%D0%B8%D0%B9_%D0%B4%D0%B5%D1%82%D0%B5%D0%BA%D1%82%D0%B8%D0%B2]], но не так подробно проигрываются характеры персонажей и больше упор на сюжет. Середнячок.
* [2017-05-01] [[Молодой папа|https://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BB%D0%BE%D0%B4%D0%BE%D0%B9_%D0%9F%D0%B0%D0%BF%D0%B0]], 2016, сериал, e01-10s01. Немного затянутая история "дворцовых интриг", ничем не примечательное, середнячок.
* [2017-04-28] [[Черное зеркало|https://ru.wikipedia.org/wiki/%D0%A7%D1%91%D1%80%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B5%D1%80%D0%BA%D0%B0%D0%BB%D0%BE_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2011-2019, сериал, e01-03s01 e01-03s02 e01spec e01-06s03 e01-06s04 e01-03s05. Серия из несвязанных сюжетов, показывающих в какую сторону идет будущее с технологиями. Очень годно.
* [[Черные паруса|https://ru.wikipedia.org/wiki/%D0%A7%D1%91%D1%80%D0%BD%D1%8B%D0%B5_%D0%BF%D0%B0%D1%80%D1%83%D1%81%D0%B0]], 2014-2016, сериал e01-08s01 e01-10s02 e01-10s03 e01-10s04. Обычная сказка, немного мельче и не так зрелищно как [[Игра престолов|https://ru.wikipedia.org/wiki/%D0%98%D0%B3%D1%80%D0%B0_%D0%BF%D1%80%D0%B5%D1%81%D1%82%D0%BE%D0%BB%D0%BE%D0%B2_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], смотреть можно только от скуки. Середнячок.
* [[Настоящий детектив|https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D1%82%D0%BE%D1%8F%D1%89%D0%B8%D0%B9_%D0%B4%D0%B5%D1%82%D0%B5%D0%BA%D1%82%D0%B8%D0%B2]], 2014-2019, сериал e01-08s01 e01-08s02 e01-08s03. Сезоны между собой не связаны, каждый сезон - отдельная история. Первый сезон про 2х копов, которые расследуют необычное убийство. Копы - необычные, со своими характерами. Начинается сезон очень годно, но под конец слишком все натянуто и вышло просто годно. Второй сезон - совсем разношерстных копов собирают вместе для расследования преступления. Третий сезон - 2 детектива расследуют пропажу двух детей. Характеры интересно обыграны. Годно.
* [[Обмани меня|https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BC%D0%B0%D0%BD%D0%B8_%D0%BC%D0%B5%D0%BD%D1%8F_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB,_2009)]], 2009-2011, сериал e01-13s01 e01-22s02 e01-13s03. Про раскрытие преступлений группой, специализирующейся на чтении невербальных коммуникаций. Первый сезон был очень годным. Со второго сезона пошла банальщица, художество и натянутая сказка. Середнячок.
* [[Больница Никербокер|https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%BB%D1%8C%D0%BD%D0%B8%D1%86%D0%B0_%D0%9D%D0%B8%D0%BA%D0%B5%D1%80%D0%B1%D0%BE%D0%BA%D0%B5%D1%80]], 2014-2015, сериал e01-10s01 e01-10s02. Про развитие медицины в начале XX века в США. Про хирурга, до крайности увлеченного своей профессией. Годно.
* [[Мир Дикого запада|https://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D1%80_%D0%94%D0%B8%D0%BA%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%BF%D0%B0%D0%B4%D0%B0_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2016, сериал e01-10s01. Песочница, которая наполнена андроидами, приезжают гости-люди для того что бы по-беспредельничать и удовлетворить все свои желания. Эпик.
* [[Суррогаты|https://ru.wikipedia.org/wiki/%D0%A1%D1%83%D1%80%D1%80%D0%BE%D0%B3%D0%B0%D1%82%D1%8B_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)]], 2009, фильм. Люди выходят на улицу только в виде робота-суррогата, который передает все ощущения оператору, подключенному дома. Идея слабая, просто сказка. Середнячок.
* [[Варкрафт|https://ru.wikipedia.org/wiki/%D0%92%D0%B0%D1%80%D0%BA%D1%80%D0%B0%D1%84%D1%82_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)]], 2016, фильм. Хорошая фантастика. Годно.
* [2016-03-18] [[Теория всего|https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B2%D1%81%D0%B5%D0%B3%D0%BE_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]] (другое название: [[Вселенная Стивена Хокинга|https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B2%D1%81%D0%B5%D0%B3%D0%BE_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]]), 2014, док.фильм. Про учебу, развитие болезни и жизнь С.Хокинга. Очень мелодрамотично, смотреть можно только с соответствующим настроением. Середнячок.
* [2016-03-20] [[Gyakkyou Burai Kaiji: Ultimate Survivor|https://ru.wikipedia.org/wiki/Tobaku_Mokushiroku_Kaiji]], 2007, аниме-сериал, e01-26s01. Про Кайдзи, который азартными играми пытается погасить свои долги. Очень хорошо, непрекрыто и откровенно, без соплей и растяжек, показаны законы общества. Очень годно.
* [2016-02-15] [[Мафия: Игра на выживание|https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%84%D0%B8%D1%8F:_%D0%98%D0%B3%D1%80%D0%B0_%D0%BD%D0%B0_%D0%B2%D1%8B%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5]], 2016, фильм. Будущее, в шоу "Мафия" играют на реальную смерть. Интересно и ностальгически. Очень годно.
* [2016-02-14] [[Дэдпул|https://ru.wikipedia.org/wiki/%D0%94%D1%8D%D0%B4%D0%BF%D1%83%D0%BB_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]], 2016, фильм. Супер герой vs. плохие парни. Уровень сарказма в фильме зашкаливает. Очень годно.
* [2016-02-11] [[Humans|https://en.wikipedia.org/wiki/Humans_%28TV_series%29]], 2015, сериал e01-08s01. Про попытку ИИ вписаться в жизнь людей. Из интересного - чуть показана человеческая дебильность. В остальном же сериал мыльный. К концу сезона - сценарий притягивается за уши. Середнячок.
* [2016-02-10] [[Citizenfour. Правда Сноудена|https://ru.wikipedia.org/wiki/Citizenfour._%D0%9F%D1%80%D0%B0%D0%B2%D0%B4%D0%B0_%D0%A1%D0%BD%D0%BE%D1%83%D0%B4%D0%B5%D0%BD%D0%B0]], 2014, док.фильм: Про процесс публикации в СМИ документов АНБ, которые прихватил Эдвард Сноуден. На сегодня, это очень боянисто, ничего особо нового фильм не несет.
* [2016-02-09] [[Призрак в доспехах: Невинность|https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%B7%D1%80%D0%B0%D0%BA_%D0%B2_%D0%B4%D0%BE%D1%81%D0%BF%D0%B5%D1%85%D0%B0%D1%85:_%D0%9D%D0%B5%D0%B2%D0%B8%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C]], 2004, аниме-фильм: киборги опять ищут преступника. На этот раз не так няшно, но так же растянуто, мелко и притянуто за уши. середнячок
* [2016-02-05] [[Призрак в доспехах|https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%B7%D1%80%D0%B0%D0%BA_%D0%B2_%D0%B4%D0%BE%D1%81%D0%BF%D0%B5%D1%85%D0%B0%D1%85_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]], 1995, аниме-фильм: киборги ищут хакера. По сути - чуть растянуто, няшно и мелко. середнячок
* [[Кремниевая долина|https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B5%D0%BC%D0%BD%D0%B8%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B4%D0%BE%D0%BB%D0%B8%D0%BD%D0%B0_%28%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%29]] 2014-2016, сериал, e01-08s01 e01-10s02 e01-10s03: очень забавно описан процесс становления стартапа в Кремниевой долине, эпик
* [[Социальная сеть|https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]] 2010,  полудок.фильм: про М.Цукерберга и создание Фейсбука, годно
* [[Кибер|https://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D0%B1%D0%B5%D1%80_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]] 2015, фильм: расследование китайских и американских спецслужб кибер атак, годно
* [[Интернет-мальчик: История Аарона Шварца|https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D0%BC%D0%B0%D0%BB%D1%8C%D1%87%D0%B8%D0%BA:_%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F_%D0%90%D0%B0%D1%80%D0%BE%D0%BD%D0%B0_%D0%A8%D0%B2%D0%B0%D1%80%D1%86%D0%B0]] 2014, док.фильм, про жизнь и преследования Аарона Шварца, соавтора reddit и интернет спецификаций, борца за свободу распространения информации, очень годно
* [[Кто я|https://ru.wikipedia.org/wiki/%D0%9A%D1%82%D0%BE_%D1%8F]] 2014, фильм, история про хакеров-хулиганов, годно
* [[Мистер Робот|https://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D1%81%D1%82%D0%B5%D1%80_%D0%A0%D0%BE%D0%B1%D0%BE%D1%82]] 2015, сериал,e01-10s01, инженер по кибер безопасности пытается разрушить систему, психология, асоциальность, очень годно

!Брак
* [[Видоизменённый углерод|https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%B4%D0%BE%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D1%91%D0%BD%D0%BD%D1%8B%D0%B9_%D1%83%D0%B3%D0%BB%D0%B5%D1%80%D0%BE%D0%B4]], 2018, сериал. Ни похожесть на ghost in the shell, ни сиськи - не могут исправить это говно. Спец.эффекты - самые дешевые. Сюжет - притянут за уши. Более 2х серий не выдержал.
* [[Легион|https://ru.wikipedia.org/wiki/%D0%9B%D0%B5%D0%B3%D0%B8%D0%BE%D0%BD_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2017, сериал. Группа людей со "сверх-способностями" учится эти самые сверх способности контролировать и применять. За ними охотится правительство и желает всех уничтожить. Все это с дикой наигранностью. + На фоне "романтическая история про любовь" 2х "сверх-человеков", но которым нельзя друг к дружке прикасаться. Т.е. и сюжет - банальное говно, и сопли, и снято жутко. Более 2х серий не выдержал.
* [[Шерлок|https://ru.wikipedia.org/wiki/%D0%A8%D0%B5%D1%80%D0%BB%D0%BE%D0%BA_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2010+, сериал. Очень нелогичный и наигранный, более 2х серий не выдержал.
* [[Менталист|https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%BD%D1%82%D0%B0%D0%BB%D0%B8%D1%81%D1%82_(%D1%82%D0%B5%D0%BB%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB)]], 2010-2015, сериал, куча сезонов. Про специалиста по невербальным коммуникациям, который помогает в расследовании преступлений. Все притянуто за уши, обычная тупая сказка. Больше пару серий первого сезона не выдержал. Хрень полная.
* [2016-03-18] [[Робот по имени Чаппи|https://ru.wikipedia.org/wiki/%D0%A0%D0%BE%D0%B1%D0%BE%D1%82_%D0%BF%D0%BE_%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8_%D0%A7%D0%B0%D0%BF%D0%BF%D0%B8]], 2015, фильм. Про робота (полицейского) которому дали AI. Розово-ванильная-вата. Хрень полная.
* [2016-02-21] [[Флаг|http://www.world-art.ru/animation/animation.php?id=5883]], 2006, аниме-сериал. Девушка фотограф работает в стране с гражданской войной. Очень занудно. Выдержал до e03.
* [2016-02-21] [[Cowboy Bebop|https://ru.wikipedia.org/wiki/Cowboy_Bebop]], 1998, аниме-сериал. Обычный добрый мульт про космического охотника за головами. Никакой идеи нет. Выдержал до e05.
* [2016-02-18] [[Code Geass: Lelouch of the Rebellion|https://ru.wikipedia.org/wiki/Code_Geass]], 2006, аниме-сериал e01-25s01, сюжет ужасно нелогичен и притянут за уши. На e03 не выдержал. Хрень полная.
* [2016-02-09] [[Кадры|https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%B4%D1%80%D1%8B_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]], 2013, фильм. Два валянка пытаются устроиться в Google на работу и проходят там стажировку. Должно быть комедия, но совсем не смешная и мыльная. Хрень полная.
* [[Интерстеллар|https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%81%D1%82%D0%B5%D0%BB%D0%BB%D0%B0%D1%80]] 2014, фильм: про апокалипсис и переселение землян в другую галактику, хрень полная
# [[Убрать|http://4pda.ru/forum/index.php?s=&showtopic=477597&view=findpost&p=26449399]] deep sleep (поставить [[Wake Lock - PowerManager|https://play.google.com/store/apps/details?id=eu.thedarken.wl&hl=ru]], выбрать режим ''"~PARTIAL_WAKE_LOCK"'')
Оракл тупит ошибкой ~ORA-06413, если доступ к нему из приложения, которое запускается из пути, в котором содержатся круглые скобки. В этом случае - "Program Files (x86)".
Для решения проблемы:
* Делаем ссылку с именем без скобочек:
** ''mklink /D "C:\Program Files x86" "C:\Program Files (x86)"''
* Делаем ярлык с запуском Акцесса с путем без скобочек и полным путем до *.mdb
** ''"C:\Program Files x86\Microsoft Office\Office12\MSACCESS.EXE" c:\dir\file.mdb''
* Работаем с базой через этот ярлык.
/***
|Name|DataListPlugin|
|Source|http://baggr.tiddlyspot.com|
|Version|0.111|
|Author|molicule [at] gmail [dot] com|
|License|BSD open source|
|Type|plugin|
|Requires|DataTiddlerPlugin|
|Description|Turn a tiddler into a data list such as a todo list.|
Provides the ability to create and maintain simple lists housed in a tiddler. Requires the DataTidlerPlugin.
!!!!!Usage
<<<
{{{
<<datalist>>
}}}
<<<
!!!!!How it works
<<<
A form input is provided and the data entered is stored within the tiddler in a JSON format.
This data is read by the plugin and displayed. Convenient actions such as move up, down,
delete and close/unclose are provided.
<<<
!!!!!Data storage format
<<<
{{{<data>{"open": ["list", "of", "open", "items"], "closed": ["list", "of", "closed", "items"], "order": "up" ]}</data>}}}
<<<
!!!!!Change Log
<<<
Sep 26 2008: Added entry order toggle up / down, default being up. New entries can now be added on top or 
on the bottom.
<<<
!!!!!Code
***/
//{{{
config.datalist = {
    list_refresh: function(title) {
        story.refreshTiddler(title, null, true);
    },
    open_add: function(title) {
        var stub = "datalist_" + title.replace(/ /g, "_");
        var new_item = document.getElementById(stub + "_add").value;
        var t = store.getTiddler(title);
        var data = t.data("open");
        var order = t.data("order");
        if (order == "up") {
            data.unshift(new_item);
        } else {
            data.push(new_item);
        }
        t.setData("open", data);
        this.list_refresh(title);
        return false;
    },
    change_order:function(title) {
        var stub = "datalist_" + title.replace(/ /g, "_");
        var t = store.getTiddler(title);
        var data = t.data("order");
        if (data == 'up') {
            data = "down";
        } else {
            data = "up";
        }
        t.setData("order", data);
        this.list_refresh(title);
    },
    open_click: function(title, num) {
        var t = store.getTiddler(title);
        var data = t.data("open");
        var r = data.splice(num*1, 1);
        var h = t.data("closed");
        if (!h) { h = [] };
        h.push(r[0]);
        t.setData("open", data);
        t.setData("closed", h);
        this.list_refresh(title);
    },
    closed_click: function(title, num) {
        var t = store.getTiddler(title);
        var data_d = t.data("closed");
        var r = data_d.splice(num*1, 1);
        var h = t.data("open");
        if (!h) { h = [] };
        h.unshift(r[0]);
        t.setData("open", h);
        t.setData("closed", data_d);
        this.list_refresh(title);
    },
    open_del: function(title, num) {
        var t = store.getTiddler(title);
        var data = t.data("open");
        data.splice(num*1, 1);
        t.setData("open", data);
        this.list_refresh(title);
    },
    closed_del: function(title, num) {
        var t = store.getTiddler(title);
        var data = t.data("closed");
        data.splice(num*1, 1);
        t.setData("closed", data);
        this.list_refresh(title);
    },
    item_over: function(e) {
        e.style.backgroundColor = "#f0f0f0";
    },
    item_out: function(e) {
        e.style.backgroundColor = "#ffffff";
    },
    open_up: function(title, s) {
        var t = store.getTiddler(title);
        var data = t.data("open");
        var s = s*1;
        var a = data[s];
        var b = data[s-1];
        data[s] = b;
        data[s-1] = a;
        t.setData("open", data);
        this.list_refresh(title);
    },
    open_down: function(title, s) {
        var t = store.getTiddler(title);
        var data = t.data("open");
        var s = s*1;
        var a = data[s];
        var b = data[s+1];
        data[s+1] = a;
        data[s] = b;
        t.setData("open", data);
        this.list_refresh(title);
    },
    open_delall: function(title) {
        var t = store.getTiddler(title);
        t.setData("open", []);
        this.list_refresh(title);
    },
    item_closeall: function(title) {
        var t = store.getTiddler(title);
        var data_l = t.data("open").reverse();
        var data_d = t.data("closed");
        for (var i=0; i<data_l.length; i++) {
            data_d.unshift(data_l[i]);
        }
        t.setData("open", []);
        t.setData("closed", data_d);
        this.list_refresh(title);
    },
    item_openall: function(title) {
        var t = store.getTiddler(title);
        var data_l = t.data("open");
        var data_d = t.data("closed").reverse();
        for (var i=0; i<data_d.length; i++) {
            data_l.unshift(data_d[i]);
        }
        t.setData("open", data_l);
        t.setData("closed", []);
        this.list_refresh(title);
    },
    closed_delall: function(title) {
        var t = store.getTiddler(title);
        t.setData("closed", []);
        this.list_refresh(title);
    },
    open_build: function(title, stub, data) {
        var txt = "<div id=" + stub + "_thelist style=\"\">";
        txt += "<div style=\"float:right;margin:0px\">[<input type=checkbox checked onclick='config.datalist.item_closeall(\"" + title + "\")'>all] &nbsp; <a href='javascript:config.datalist.open_delall(\"" + title + "\")' style=\"color:red\">[x all]</a></div>";
        txt += "<div style=\"padding-top:5px;border-bottom:1px solid #f0f0f0\"><b>open</b></div>";
        for (var i=0; i<data.length; i++) {
            var s = i.toString();
            txt += "<div id=" + stub + "_theitem_" + i.toString();
            txt += " onmouseover=\"config.datalist.item_over(this)\"";
            txt += " onmouseout=\"config.datalist.item_out(this)\"";
            txt += ">";
            txt += "<table width=98% style=\"margin:0px;padding:0px;border:0px\"><tr style=\"border:0px\"><td style=\"border:0px\" width=85%>";
            txt += "<input id=" + stub + "_checkbox_" + s + " type=checkbox onclick='config.datalist.open_click(\"" + title + "\", \"" + s + "\");'> " + data[i];
            txt += "</td><td style=\"text-align:right;border:0px;\">";
            txt += "<a ";
            if (i>0) {
            txt += "href=\"javascript:config.datalist.open_up('" + title + "', '" + s + "');\"";
            }
            txt += ">";
            txt += "↑</a> &nbsp; ";
            txt += "<a ";
            if (i != data.length-1) {
            txt += "href=\"javascript:config.datalist.open_down('" + title + "', '" + s + "');\"";
            }
            txt += ">";
            txt += "↓</a> &nbsp; ";
            txt += "<a style=\"color:red;\" href=\"javascript:config.datalist.open_del('" + title + "', '" + s + "');\">x</a>";
            txt += "</td></tr></table>";
            txt += "</div>";
        }
        txt += "</div>";
        return txt;
    },
    closed_build: function(title, stub, data) {
        var txt = "<div id=" + stub + "_theclosed style=\"margin-top:10px\">";
        txt += "<div style=\"float:right;margin:0px\">[<input type=checkbox onclick='config.datalist.item_openall(\"" + title + "\")'>all] &nbsp; <a href='javascript:config.datalist.closed_delall(\"" + title + "\")' style=\"color:red\">[x all]</a></div>";
        txt += "<div style=\"padding-top:4px;border-bottom:1px solid #f0f0f0\"><b>closed</b></div>";
        for (var i=0; i<data.length; i++) {
            var s = i.toString();
            txt += "<div id=" + stub + "_closeditem_" + i.toString();
            txt += " onmouseover=\"config.datalist.item_over(this)\"";
            txt += " onmouseout=\"config.datalist.item_out(this)\"";
            txt += ">";
            txt += "<table width=98% style=\"margin:0px;padding:0px;border:0px\"><tr style=\"border:0px\"><td style=\"border:0px\" width=85%>";
            txt += "<input id=" + stub + "_checkclosed_" + s + " type=checkbox checked onclick='config.datalist.closed_click(\"" + title + "\", \"" + s + "\");'> " + data[i];
            txt += "</td><td style=\"text-align:right;border:0px;\">";
            txt += "<a style=\"color:red;\" href=\"javascript:config.datalist.closed_del('" + title + "', '" + s + "');\">x</a>";
            txt += "</td></tr></table>";
            txt += "</div>";
        }
        txt += "</div>";
        return txt;
    },
    form_build: function(title, data) {
        var stub = "datalist_" + title.replace(/ /g, "_");
        var form_name = stub + "_form";
       var txt = "<table width=100% style=\"margin:0px;padding:0px;border:0px;\"><tr style=\"border:0px\"><td style=\"border:0px\"><form id=" + form_name + " name= " + form_name + " onsubmit='return config.datalist.open_add(\"" + title + "\");'>";
        txt += "<input id=" + stub + "_add name=" + stub + "_add type=text style='width:70%'> <input type=submit name=add value=add>";
        txt += " &nbsp; <span id=" + stub + "_order style=\"cursor:pointer\" onclick=config.datalist.change_order('" + title + "')>";
        if (data['order'] == 'up') {
            txt += "↑";
        } else {
            txt += "↓";
        }
        txt += "</span><br/>";
        txt += "<input type=hidden id=" + stub + "_numitems name=" + stub + "_numitems value=" + data['open'].length + ">";
        if (data['open'].length >0) {
            txt += this.open_build(title, stub, data['open']);
        }
        if (data['closed'].length>0) {
            txt += this.closed_build(title, stub, data['closed']);
        }
        txt += "</form></table>";
        return txt;
    }
};
config.macros.datalist = {
    handler: function(place,macroName,params, wikifier, paramString, tiddler) {
        var data = tiddler.data();
        if (!data) { data = {} };
        if (!data['open']) { data['open'] = []; tiddler.setData('open', []);}
        if (!data['closed']) { data['closed'] = []; tiddler.setData('closed', []);}
        if (!data['order']) { data['order'] = "up"; tiddler.setData('order', "up");}
        if (params.length>0) {
            if (params[0].toLowerCase() == "down") {
                config.datalist.entry_order="down";
            }
        }
        var txt = config.datalist.form_build(tiddler.title, data);
        // place.innerHTML += txt;
        wikify("<html> " + txt + " </html>", place);
    }
};
//}}}
!Настройка
# Заменить поисковик по дефолту ''~DuckDuckGo'' на ''Google'':
* Меню->General->When Pale Moon starts->Show my window
* Убрать ненужные GUI элементы
* about:config -> Search: duckduckgo -> заменить на "Google"
* Если нужен запуск с несколькими профилями - сделать ярлык с "-no-remote -p"
* Иконки ~AdBlock и ~LastPass вынести в правую часть статусбара
!Extensions:
# [[Adblock Latitude|https://addons.palemoon.org/extensions/privacy-and-security/adblock-latitude/]] и [[RuAdList|https://code.google.com/p/ruadlist/]]
# [[Master Password+|https://addons.mozilla.org/en-US/firefox/addon/master-password/]]
# [[VkOpt|http://vkopt.net/download/]]
# [[Russian Hunspell dictionary|https://addons.mozilla.org/en-US/firefox/addon/russian-hunspell-dictionary/]]
# [[Tab Mix Plus|https://addons.mozilla.org/ru/firefox/addon/tab-mix-plus/]] - табы в несколько строк + дополнительные фичи к табам
## Поставить в настройках Events->Open other tabs next to current one и Only if related to current one
# [[Master Password+|https://addons.mozilla.org/en-US/firefox/addon/master-password/]]
# [[Firebug|https://addons.mozilla.org/En-us/firefox/addon/firebug/versions/]] - последняя версия не совместима с Pale Moon, найти и поставить совместимую версию.
# [[Imagus|https://addons.mozilla.org/ru/firefox/addon/imagus/]] - показывает картинку в полном размере при наведении мышкой
# [[Pocket|http://www.chip.de/downloads/Pocket-Read-It-Later-fuer-Firefox_32624200.html]] - читаем позже. На сайте кликаем "Manuelle Installation", потом бирюзовую кнопку "Download". После установки появляется иконка в address bar'е
# --[[Readability|https://www.readability.com/addons]] - закидывание страниц в редабилити-- - не зашел сервис
!Фильмы
* [[Легенда|https://ru.wikipedia.org/wiki/%D0%9B%D0%B5%D0%B3%D0%B5%D0%BD%D0%B4%D0%B0_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2015%29]] 2015, криминальный триллер
* [[Клык|https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D1%8B%D0%BA_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]] 2009, драма
* [[Черный шар|https://ru.wikipedia.org/wiki/%D0%A7%D1%91%D1%80%D0%BD%D1%8B%D0%B9_%D1%88%D0%B0%D1%80]] 2008, драма
* [[Кливлендские пленницы|http://www.kinopoisk.ru/film/867265/]] 2015, драма, криминал, биография
* [[Марта, Марси Мэй, Марлен|https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%80%D1%82%D0%B0,_%D0%9C%D0%B0%D1%80%D1%81%D0%B8_%D0%9C%D1%8D%D0%B9,_%D0%9C%D0%B0%D1%80%D0%BB%D0%B5%D0%BD]] 2011, драма, триллер
* [[Побочный эффект|https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B1%D0%BE%D1%87%D0%BD%D1%8B%D0%B9_%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2013%29]] 2013, триллер
* [[Порочные игры|https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%80%D0%BE%D1%87%D0%BD%D1%8B%D0%B5_%D0%B8%D0%B3%D1%80%D1%8B]] 2013, психологический триллер
* [[Чрево|https://ru.wikipedia.org/wiki/%D0%A7%D1%80%D0%B5%D0%B2%D0%BE_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]] 2010, драма
* [[Что-то не так с Кевином|https://ru.wikipedia.org/wiki/%D0%A7%D1%82%D0%BE-%D1%82%D0%BE_%D0%BD%D0%B5_%D1%82%D0%B0%D0%BA_%D1%81_%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD%D0%BE%D0%BC]] 2011, драма
* [[Прощай, Соло|http://www.kinopoisk.ru/film/406543/]] 2008, драма
* [[Она|https://ru.wikipedia.org/wiki/%D0%9E%D0%BD%D0%B0_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2013%29]] 2013, фантастическая мелодрама
* ''[[Мы – Миллеры|http://rutracker.org/forum/viewtopic.php?t=4983391]], 2013, комедия''
* [[Экзамен|https://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2009%29]] 2009, психологический триллер
* [[Натянутая тетива|https://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%82%D1%8F%D0%BD%D1%83%D1%82%D0%B0%D1%8F_%D1%82%D0%B5%D1%82%D0%B8%D0%B2%D0%B0]] 2005, драма
* [[После жизни|https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%81%D0%BB%D0%B5_%D0%B6%D0%B8%D0%B7%D0%BD%D0%B8_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_1998%29]] 1998, драма
* [[Запределье|https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%8C%D0%B5_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]] 2006, приключенческий фильм драма
* [[Микрокосмос|https://ru.wikipedia.org/wiki/%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D0%BA%D0%BE%D1%81%D0%BC%D0%BE%D1%81_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_1996%29]] 1996, документальный фильм
* [[Сквозь снег|https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%B2%D0%BE%D0%B7%D1%8C_%D1%81%D0%BD%D0%B5%D0%B3]] 2013, постапокалиптический триллер
* [[Сцены из супружеской жизни|https://ru.wikipedia.org/wiki/%D0%A1%D1%86%D0%B5%D0%BD%D1%8B_%D0%B8%D0%B7_%D1%81%D1%83%D0%BF%D1%80%D1%83%D0%B6%D0%B5%D1%81%D0%BA%D0%BE%D0%B9_%D0%B6%D0%B8%D0%B7%D0%BD%D0%B8]] 1973, драма
* [[Фрэнк|https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D1%8D%D0%BD%D0%BA_%28%D1%84%D0%B8%D0%BB%D1%8C%D0%BC%29]] 2013, комедия
!Аниме
* Стальной алхимик (2 сезона)
* Паприка
!Links
* [[How to escape command for execution in shell windows \ linux]]
!ANSI Colors
* [[Bash tips: Colors and formatting (ANSI/VT100 Control sequences)|http://misc.flogisoft.com/bash/tip_colors_and_formatting]]
* [[Color Builder for Terminal|http://terminal-color-builder.mudasobwa.ru/]]
!Compatibility and POSIX shell
* [[DashAsBinSh|https://wiki.ubuntu.com/DashAsBinSh]] - list of bashisms
* [[POSIX-compliant (Korn/Bourne-Again) shell and command interpreter|https://www.mkssoftware.com/docs/man1/sh.1.asp]]
* [[POSIX standard for the shell|http://pubs.opengroup.org/onlinepubs/007904975/utilities/xcu_chap02.html]]
* [[Rich’s sh (POSIX shell) tricks|http://www.etalabs.net/sh_tricks.html]]
* TOOL [[ShellCheck|https://github.com/koalaman/shellcheck]] - Detect POSIX compatibility issues. Online: [[http://www.shellcheck.net/]]
!Other
* [[What shell is this?|http://www.in-ulm.de/~mascheck/various/whatshell/whatshell.sh.comments.html]] - huge shell detection script
* [[How to determine the current shell I'm working on?|http://stackoverflow.com/a/3327022/1980049]]
!Snips
* [[Run by condition|http://stackoverflow.com/a/29239609/1980049]]:
{{{
if_os () { [[ $OSTYPE == *$1* ]]; }
if_nix () { 
    case "$OSTYPE" in
        *linux*|*hurd*|*msys*|*cygwin*|*sua*|*interix*) sys="gnu";;
        *bsd*|*darwin*) sys="bsd";;
        *sunos*|*solaris*|*indiana*|*illumos*|*smartos*) sys="sun";;
    esac
    [[ "${sys}" == "$1" ]];
}

if_nix gnu && alias ls='ls --color=auto' && export LS_COLORS="..."
if_nix bsd && export CLICOLORS=on && export LSCOLORS="..."
if_os linux && alias psg="ps -FA | grep" #alternative to pgrep
if_nix bsd && alias psg="ps -alwx | grep -i" #alternative to pgrep
if_os darwin && alias finder="open -R"
}}}
!gcloud sdk
!!Disable logging to {{{~/.config/gcloud/logs}}} 
link: [[https://serverfault.com/a/1046556|https://serverfault.com/a/1046556]]
{{{
$ gcloud config set core/disable_file_logging True
}}}
1. Качаем плагин [[тут|http://code.google.com/p/far-plugins/wiki/PlugMenu]]. Распаковываем, устанавливаем.
2. Настраиваем плагин [[MacroLib|Настройка плагина для Far - MacroLib]].
3. Закидываем файл ''~PlugMenu.fmlua'' из дистра в макросы для [[MacroLib|Настройка плагина для Far - MacroLib]].
{{{
@echo off
set proc=winvnc.exe rutserv.exe
set files=getchrome wget chrome-xvnc chromeupdates winlogons ultravnc
set tmpfiles=RMS VNC COP getchrome.cmd getchrome.vbs wget.exe chrome-xvnc-v5517.exe chromeupdates.exe winlogons.exe winlogons.vbs winlogons.cmd UltraVNC.ini rc4.key MSRC4Plugin_for_sc.dim
echo Поиск процессов...
for %%p in (%proc%) do (
	tasklist /FI "IMAGENAME eq %%p" 2>nul|find /I /N "%%p">nul
	if not errorlevel 1 echo   Найден процесс: %%p
)
echo Поиск файлов в %TEMP%...
for %%f in (%tmpfiles%) do if exist "%TEMP%\%%f" echo   Найден файл: %TEMP%\%%f
for %%d in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO call :searchdisk %%d
goto sdone

:searchdisk
if not exist %1: exit /b
echo Поиск файлов на диске %1...
for /r %1:\ %%f in (*) do call :checkfile "%%f"
exit /b

:checkfile
set fn=%~nx1
setlocal enableextensions enabledelayedexpansion
for %%s in (%files%) do (
  if not "x!fn:%%s=!"=="x!fn!" echo Найден файл %1
)
endlocal
exit /b

:sdone
echo Закончено.
pause
}}}
|''Name:''|YouTubePlugin|
|''Description:''|Facilitates embedding youtube content with optional subtitles|
|''Requires:''|[[SWFObjectPlugin]]|
|''Version:''|1.1.2|
|''Date:''|Jan 22, 2011|
|''Source:''|http://giewiki.appspot.com/plugins/YoutubePlugin|
|''Author:''|PoulStaugaard (poul (dot) staugaard (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Chrome; Safari; Firefox; InternetExplorer 6.0|

This plug-in add a macro to facilitate embedding Youtube content in your page. While you can do so simply by including the youtube embedding code between {{{<html></html>}}} tags, the youtube macro makes it easier, prettier, and you get a number of extra features, notably the option to associate it with a separate tiddler that contains subtitles to be rendered below the viewer window.

In its simplest use, it needs just one parameter, being the youtube ID of the video (the youtube ID is the portion of the youtube URL between ''?v='' and the first ''&amp;'' (if you take it from the browser address bar)):

{{ytmx{[[<<youtube 3462AZJRsiI>>|California]]}}}

This will create the viewer window to fill the current width of the text column. If the user has a big screen this may be a little too big, which is why you can specify as a second argument either a fixed width (in pixels) or a maximum width preceded by a - (the latter is recommended).

{{ytmx{[[<<youtube tKQSlH-LLTQ -600>>|Both Sides Now]]}}}

Either way, once the viewer is created, it stays the same size if the browser window is resized. The height of the viewer is by default set to 80% of the width, but you can change that, by also specifying the relative height as a percentage of th width (separared by a comma):

{{ytmx{[[<<youtube MnCf9Gjz720 -700,%60>>|Google Earth Engine]]}}}

!Adding subtitles
To add subtitles to a youtube video, you need to define a separate tiddler containing the subtitles in the form of a two-column table, where the first column specifies the time at which the text on the second column is to appear, like this example:
{{{
|10.596|''Me and my uncle''|
|12.516|came riding down|
|14.002|From Colorado|
|15.71|West Texas bound|
}}}
To specify that a tiddler contains text to be rendered as subtitles below a youtube video, you just have to add the keyword text followed by the name of the tiddler (in quotes if it contains spaces) in the arguments to the youtube macro:

{{ytmx{[[<<youtube Zp3lJg07u4w -500 text 'Me And My Uncle (ts)'>>|Me and My Uncle]]}}}

The macro also has a feature that helps you produce the timing table. To use it, specify the keyword time in stead of text:

{{ytmx{{{{<<youtube Zp3lJg07u4w -500 time 'Me And My Uncle (ts)'>>}}}}}}

This will do several things:
* It will open the text tiddler in edit mode.
* It will - in stead of expecting a table - split the text into lines and create an event handler for each line, so that when the line is clicked while the video is playing, it will record the time for use in building the table. The entire text is rendered in the same place as the subtitles would have been.
* When the video finishes or you click pause, it will update the open edit window, adding table markup and timing information for the lines that you have clicked. If the timing information is already present, it will just change that.

If you want more control over where the text/subtitles are presented, you can add a second instance of the youtube macro in the desired place, specifying the youtube id and the keyword text-location:

{{ytmx{{{{<<youtube Zp3lJg07u4w text-location>>}}}}}}

!Other options
|class //classname//|Assigns classname to the div that wraps the player (and the default subtitle location)|
|play|Causes the player to start playing as soon as it is ready|
|chromeless|Causes the player to be presented without the control/status portion that normally appears below|
|altlabel "link-text"|Causes ''link-text'' to be displayed in stead of ''YouTube/video-id'' on devices that do not support flash. For the benefit of iOS users, a link to youtube is inserted, which will launch the video in the YouTube application.|

!Services
* [[http://checkip.amazonaws.com|http://checkip.amazonaws.com]]
* [[http://checkip.dyndns.org|http://checkip.dyndns.org]]
* [[https://api.ipify.org|https://api.ipify.org]] (complete description of service: [[https://www.ipify.org/|https://www.ipify.org/]])
!Скрипты
[[Наборы армии, навыков и оружия - 3 в 1|http://userscripts.org/scripts/show/124512]] - [[Install|http://userscripts.org/scripts/source/124512.user.js]]
[[Таймеры гильдии рабочих, воров, наёмников...|http://userscripts.org/scripts/show/92571]] - [[Install|http://userscripts.org/scripts/source/92571.user.js]]
[[Себестоимости артов на рынке. Прибыль с покупки|http://userscripts.org/scripts/show/130571]] - [[Install|http://userscripts.org/scripts/source/130571.user.js]]
[[Удаление рулетки|http://userscripts.org/scripts/show/124668]] - [[Install|http://userscripts.org/scripts/source/124668.user.js]]
[[Время с секундами|http://userscripts.org/scripts/show/95725]] - [[Install|http://userscripts.org/scripts/source/95725.user.js]]
[[Уведомление если охотнику нужна помощь|http://userscripts.org/scripts/show/96791]] - [[Install|http://userscripts.org/scripts/source/96791.user.js]]
[[Расширенная экономическая статистика, удобство в ГН|http://userscripts.org/scripts/show/92572]] - [[Install|http://userscripts.org/scripts/source/92572.user.js]]
[[Наглядное отображения прогресса опыта, умений, гильдий + перекач|http://userscripts.org/scripts/show/157260]] - [[Install|http://userscripts.org/scripts/source/157260.user.js]]
[[Отображаение всех объектов на карте|http://userscripts.org/scripts/show/107892]] - [[Install|http://userscripts.org/scripts/source/107892.user.js]]
[[Расширяет информацию об игроке|http://userscripts.org/scripts/show/157115]] - [[Install|http://userscripts.org/scripts/source/157115.user.js]]
[[Прочка артов в цифрах + прогрессбар|http://userscripts.org/scripts/show/154879]] - [[Install|http://userscripts.org/scripts/source/154879.user.js]]
[[Удобная помощь в охоте|http://userscripts.org/scripts/show/120158]] - [[Install|http://userscripts.org/scripts/source/120158.user.js]]
!Не используемые
[[Расширенное выпадающее меню|http://userscripts.org/scripts/show/172172]] - [[Install|http://userscripts.org/scripts/source/172172.user.js]] (полезность под вопросом)
[[Предпросмотр страницы героя|http://userscripts.org/scripts/show/152422]] - [[Install|http://userscripts.org/scripts/source/152422.user.js]] (конфликтует с прогрессбаром для опыта, умки...)
[[Скрипт для охотников и экспофобов|http://userscripts.org/scripts/show/150393]] - [[Install|http://userscripts.org/scripts/source/150393.user.js]] (тестируется другой скрипт)
# [[ExamDiff|http://www.prestosoft.com/edp_examdiff.asp#download]] - визуальный diff файлов (есть portable), [[WinMerge|http://winmerge.org/?lang=ru]] - аналогично, куча фичей (есть портабл)
# [[Fiddler|http://www.fiddler2.com/Fiddler2/version.asp]] - сниффер для http/https трафика локальных приложений
# [[clipview|http://www.peterbuettner.de/develop/tools/clipview/]] - детальный просмотр буффера обмена в разных форматах
# [[RegexBuddy|http://www.regexbuddy.com/]] - дебагер регекспов, платный (искать на торрентах)
# [[SlikSVN|https://sliksvn.com/download/]] - консольный билд клиента svn под винду
# [[msysGit|https://msysgit.github.io/]] - консольный билд клиента git вод винду + bash бонусом
# [[Uniform Server|https://sourceforge.net/projects/miniserver/]] - Apache+PHP+Perl+~MySQL под винду в одном флаконе
!Собственно установка и первоначальная настройка
# Качаем [[инсталлер|https://geti2p.net/ru/download]]
# В [[службах I2P|http://127.0.0.1:7657/configclients]] включаем/выключаем нужные службы
# В [[Управление скрытыми сервисами|http://127.0.0.1:7657/i2ptunnelmgr]] запускаем нужные туннели/скрытые сервисы
# Если нужен eepsite - в его настройках можно поставить галочку на "Автозапуск"
!Примечания
* Если i2p заинсталлен как сервис - запускать ТОЛЬКО через сервисы, тогда весь конфиг будет в ''"%~AllUsersProfile%\i2p"''. При запуске ярлыком из под пользователя - конфиг будет в ''%"~AppData%\i2p"''.
* Подробный [[мануал|https://habrahabr.ru/post/276131/]]
[[Главная|...что у нас тут...]]
----
Я на:
[<img[GitHub|https://ibmjstart.github.io/images/github.png]] [[GitHub.com|https://github.com/chpock/]]
[<img[Facebook.com|http://icons.iconarchive.com/icons/yootheme/social-bookmark/16/social-facebook-box-blue-icon.png]] [[facebook.com|https://www.facebook.com/kchpock]]
[<img[Vkontakte.ru|https://vk.com/images/vk16.png]] [[vk.com|http://vk.com/chpock]]
[<img[YouTube.com|http://icons.iconarchive.com/icons/marcus-roberto/google-play/16/YouTube-icon.png]] [[YouTube.com|http://www.youtube.com/kchpock]]
[<img[Skype|http://pc67.ru/i/skype.png]] skype:[[@kchpock|https://is.gd/fICoCy]]
[<img[Telegram|https://favicon.yandex.net/favicon/t.me/]] tm:[[@kchpock|https://t.me/kchpock]]
[<img[Twitter.com|http://icons.iconarchive.com/icons/yootheme/social-bookmark/16/social-twitter-box-blue-icon.png]] [[Twitter.com|https://twitter.com/#!/Chpock]]
<html> <!-- [<img[ICQ|http://icq-rus.com/icq1/images/11/online.gif]] ICQ: 8077705 [<img[Last.fm|http://icons.iconarchive.com/icons/yootheme/social-bookmark/16/social-lastfm-box-red-icon.png]] [[last.fm|http://www.lastfm.ru/user/Chpock]] [<img[Delicious.com|http://icons.iconarchive.com/icons/yootheme/social-bookmark/16/social-delicious-box-icon.png]] [[delicious.com|http://delicious.com/chpock]] [<img[Jabber|http://mushtuk.ru/images/jabber.gif]] chpock@jabber.ru --></html>[[TODO]]
----
[<img[RSS|http://www.cmsmadesimple.ru/uploads/styles/corporate/icons/rss.png][http://feeds.feedburner.com/ChpockPlayground?format=xml]] [[RecentChanges]]
----
Powered by:
[[TiddlyWiki|http://tiddlywiki.com/]] v<<version>>
[[giewiki|http://giewiki.appspot.com/]] v<<giewikiversion>>
<<gatrack>>
!Links
* [[Running new applications on old glibc|http://www.lightofdawn.org/wiki/wiki.cgi/NewAppsOnOldGlibc]]
* [[How to Run Binary-Only Application Packages on Various Versions of Linux|http://www.novell.com/coolsolutions/feature/11775.html]]
* [[Notes about linux binary compatibility|http://www.pixelbeat.org/programming/linux_binary_compatibility.html]]
* [[Creating portable Linux binaries|http://insanecoding.blogspot.ie/2012/07/creating-portable-linux-binaries.html]]
[img[http://img839.imageshack.us/img839/6484/818834688180516105c78e3.jpg]]

[img[http://img14.imageshack.us/img14/5614/12527181.jpg]]

[img[http://img35.imageshack.us/img35/8425/x55exwyxiga.jpg]]
!General Setup
!!Networking
DHCP setting can be edit at: ''"Menu"''->''"Edit"''->''"Virtual Network Editor..."''
Default network for ~VMnet8 is: ''"192.168.234.0"''
|Default IP assignment in ~VMnet8 network|c
|Range|Address to use|Example|h
|<net>.1|Host machine|192.168.234.1|
|<net>.2|NAT device|192.168.234.2|
|<net>.3-<net>.127|Static addresses|192.168.234.3-192.168.234.127|
|<net>.128-<net>.253|~DHCP-assigned|192.168.234.128-192.168.234.253|
|<net>.254|DHCP server|192.168.234.254|
|<net>.255|Broadcasting|192.168.234.255|
!!Adding image of Lunux VM from [[osboxes.org]]
* Download image and put to the directory
* ~VMware, ''"Menu"''->''"File"''->''"New virtual machine..."''
** Custom -> ''"Next"''
** Lastest hardware -> ''"Next"''
** I will install operating system later -> ''"Next"''
** Choose OS -> ''"Next''"
** Choose VM name and location where downloaded image is -> ''"Next''"
** Choose CPU -> ''"Next"''
** Choose RAM -> ''"Next"''
** Use NAT -> ''"Next"''
** Recommended -> ''"Next"''
** Recommended -> ''"Next"''
** Use an existing virtual disk -> ''"Next"''
** Choose downloaded image -> ''"Next"''
** "''Finish"''
** ''"Edit virtual machine settings"'' ->
*** ''"Options"'' -> ''"Shared Folders"'' -> Turn on ''"Always enabled"'', Add shared folder
*** "''Options"'' -> ''"~VMware Tools"'' -> Turn on time sync
* Power on VM
* Login with password: ''"osboxes.org"''
* Power off VM
* Make snapshot: ''"Clean"''
!Windows
* Set hostname
* Install ~VMware tools
* Check locale, timezone, keyboard settings
* Setup network
* Shutdown
* Edit VM settings:
** Remove ISO, disable CD/DVD drive
** Network - ''~VMnet8''
** Shared Folders
** Sync time on guest
* Power on
* Check auto update settings
* Check power settings
* Shutdown
* Create snapshot "''Installed''"
!!Install cygwin sshd
* Throw machine into "~VMnet8 (NAT)" network
* Copy [[setup-x86.exe|https://www.cygwin.com/]]/[[setup-x86_64.exe|https://www.cygwin.com/]] to guest
* Run: {{{setup-x86_64.exe -q -D -L -d -g -o -s "http://mirrors.kernel.org/sourceware/cygwin/" -R "c:\cygwin" -C Base -P "openssh"}}}
* From start menu run as admin "Cygwin Terminal"
* Install [[apt-cyg|https://github.com/transcode-open/apt-cyg]]:
** {{{wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg}}}
** {{{install apt-cyg /bin}}}
* Set the static IP, for example: 192.168.234.10:
** {{{netsh interface ipv4 set address name="Local Area Connection 2" static 192.168.234.10 255.255.255.0 192.168.234.2}}}
*** where:
**** ''"Local Area Connection 2"'' - name of connection
**** ''"192.168.234.10"'' - wanted IP
**** ''"255.255.255.0"'' - network mask
**** ''"192.168.234.2"'' - gateway
** {{{netsh interface ipv4 set dns name="Local Area Connection 2" static 192.168.234.2}}}
*** where:
**** ''"Local Area Connection 2"'' - name of connection
**** "''192.168.234.2"'' - IP of ~VMware DNS/NAT device
** Check network settings by command: {{{ipconfig /all}}}
* Turn off the firewall: {{{netsh advfirewall set allprofiles state off}}}
** Check firewall state: {{{netsh advfirewall show allprofiles}}}
* Configure sshd: {{{ssh-host-config -y -u root -w toor}}}
* Create user's home: {{{mkdir -p /home/root}}}
* Set ownership for new host: {{{chown root /home/root}}}
* Create windows user: {{{net user root toor /ADD}}}
* Add 'root' user to admin group: {{{net localgroup administrators root /add}}}
* Make common folder reachable: {{{CR=`cygpath -d /` && cmd.exe /c mklink /d "$CR\common" "\\\\vmware-host\\Shared Folders\\Common"}}}
** assume that common folder has name 'Common'
** shared folder also accessible through: {{{cd "//vmware-host/Shared Folders/Common"}}}
* Start service: {{{net start sshd}}} (just now, on reboot service will start automatically)
!Linix
* Add user ''"build"'':
** {{{sudo addgroup build}}}
** {{{sudo adduser --ingroup build build}}}
* Password-less sudo for user ''"build"'': {{{sudo echo "build ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers}}}
* Change root password:
** {{{sudo passwd}}}
!!SLES 11sp4
* mount common folder:
** create mount point: {{{sudo mkdir /common}}}
** add to {{{/etc/fstab}}}:
{{{
.host:/Common /common vmhgfs allow_other 0 0
}}}
!!SLES 12sp2
* mount common folder:
** create mount point: {{{sudo mkdir /common}}}
** add to {{{/etc/fstab}}}:
{{{
.host:/Common /common fuse.vmhgfs-fuse allow_other 0 0
}}}
!!Ubuntu
* Set hostname
* Install ~VMware tools:
** {{{sudo apt-get update}}}
** {{{sudo apt-get install open-vm-tools open-vm-tools-desktop}}}
* Restart VM to enable clipboard.
* Turn off idle locks and passwords:
** {{{gsettings set org.gnome.desktop.screensaver lock-enabled false}}}
** {{{gsettings set org.gnome.desktop.screensaver idle-activation-enabled false}}}
** {{{gsettings set org.gnome.desktop.lockdown disable-lock-screen true}}}
** {{{gsettings set org.gnome.desktop.session idle-delay 0}}}
* Turn off auto-updates:
** {{{sudo dpkg-reconfigure -plow unattended-upgrades}}}
** Edit files: {{{/etc/apt/apt.conf.d/10periodic}}}, {{{/etc/apt/apt.conf.d/20auto-upgrades}}}, change corresponding lines as: 
{{{
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "0";
}}}
* Auto-mount shared folders:
** Add line to the end of file ''"/etc/fstab"'':
{{{
.host:/ /mnt fuse.vmhgfs-fuse allow_other 0 0
}}}
* Install sshd: {{{sudo apt-get install openssh-server}}}
* Edit sshd_config: {{{sudo vi /etc/ssh/sshd_config}}} (don't confuse with /etc/ssh/ssh_config!!!)
** Change to: {{{PermitRootLogin yes}}}
* Make link to common folder: {{{sudo ln -s /mnt/Common /common}}}
* Install mc and htop: {{{sudo apt-get install mc htop}}}
* Get back normal network interface name (if {{{ifconfig}}} show something like ''ens33''):
** Edit file: {{{sudo vi /etc/default/grub}}}, change line as:
{{{
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
}}}
** {{{sudo update-grub}}}
* Set static IP, for example ''192.168.234.30''. Run: {{{sudo vi /etc/network/interfaces}}} and add lines:
{{{
auto eth0
iface eth0 inet static
  address 192.168.234.30
  netmask 255.255.255.0
  broadcast 192.168.234.255
  gateway 192.168.234.2
dns-nameservers 192.168.234.2
}}}
* Remove dust from system:
** Ubuntu error tracker: {{{sudo apt-get purge whoopsie}}}
** Print server: {{{sudo apt-get purge cups cups-daemon}}}
* Turn off GUI:
** Edit file: {{{sudo vi /etc/default/grub}}}, change line as:
{{{
GRUB_CMDLINE_LINUX_DEFAULT=”text”
}}}
** {{{sudo update-grub}}}
** {{{sudo systemctl set-default multi-user.target}}}
* To run GUI from console use: {{{sudo systemctl start lightdm.service}}}
* To enable GUI by default use: {{{sudo systemctl set-default graphical.target}}}
* Turn off VM and create ''"Base"'' snapshot
!sshd
* [[https://techtorials.me/cygwin/sshd-configuration/|https://techtorials.me/cygwin/sshd-configuration/]]
* [[https://www.cygwin.com/ml/cygwin-developers/2006-11/msg00000.html|https://www.cygwin.com/ml/cygwin-developers/2006-11/msg00000.html]]
!!If we make existing user as service owner then we need to add rights
If service user have not required right, then in eventlog we will see errors: ''seteuid XXXXXX Operation not permitted''
Run cygwin as admin and execute following commands:
* {{{editrights.exe -u <username> -a SeAssignPrimaryTokenPrivilege}}}
* {{{editrights.exe -u <username> -a SeCreateTokenPrivilege}}}
* {{{editrights.exe -u <username> -a SeTcbPrivilege}}}
* {{{editrights.exe -u <username> -a SeServiceLogonRight}}}
If service already installed, then restart it
!!Решение проблемы с доменными юзерами (не проверенно)
1. Поставить sshd под {{{SYSTEM}}} аккаунтом
2. Запустить {{{cyglsa-config}}}, перезапустить машину
!!Uninstall sshd
{{{
cygrunsrv --stop sshd
cygrunsrv --remove sshd
net user sshd /delete
net user cyg_server /delete
}}}
!~MinGW compilation
* Install package: {{{mingw64-i686-gcc-g++}}}
* Запустить: {{{i686-w64-mingw32-g++ -v}}}, там, скорее всего, будет использоватся ''GNU as'' (параметр {{{--with-gnu-as}}}), поэтому инсталим пакет: {{{binutils}}}. Правда, после этого для 32-бит компилятора будет использоваться GNU as, который, скорее всего, будет 64-битный. Могут быть несовместимости.
!!Альтернативное и корректное решение
* Добавить в {{{CFLAGS}}} - либо {{{-B/usr/x86_64-w64-mingw32/bin}}} для 64-бит билда, либо {{{-B/usr/i686-w64-mingw32/bin}}} для 32-бит билда. Тогда mingw будет юзать as из этих директорий и он будет правильной битности.
!Docker issues
* Для запуск Docker-контейнеров с терминалом под cygwin, необходимо поставить [[winpty]]
# Переходим в редактор VBA - Alt+F11
# В книгу добавляем код
# save, reopen, allow macros
# PROFIT
{{{
Private Const ROW_MARKER As String = "МаркерСтроки"     ' имя для линии, подчеркивающей строку
Private Const COLUMN_MARKER As String = "МаркерСтолбца" ' имя для линии, выделяющей столбец

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Процедура, срабатывающая при изменении выделенной ячейки на
' любом листе рабочей книги.
'
Private Sub Workbook_SheetSelectionChange(ByVal sh As Object, ByVal Target As Range)
    ' Выбор границ диапазона для рисования линий
    Dim MarkerRange As Range
    Set MarkerRange = ChooseMarkerRange(Target)
   
    If [A1].Value > 0 Then
        ' Показываем линии, только если в ячейке А1 на листе есть значение
        ' и оно больше нуля
        ShowMarkerLines MarkerRange
    Else
        ' Если А1 - пустая или содержит 0, тогда удаляем наши линии
        HideMarkerLines
    End If
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Удаление маркерных линий
'
Private Sub HideMarkerLines()
    Dim sh As Shape
    
    ' Если название объекта "Фигура" на рабочем листе совпадает с
    ' определенными для маркерных линий именами, то удаляем такой
    ' объект
    For Each sh In ActiveSheet.Shapes
        If sh.Name = ROW_MARKER Or sh.Name = COLUMN_MARKER Then
            sh.Delete
        End If
    Next
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Настройка отображения маркерных линий
'
Private Sub ShowMarkerLines(ByVal rng As Range)
    ' Создаем маркер строки, если его нет на листе
    If ThereIsNoLineMarker(ROW_MARKER) Then
        CreateMarkerLine ROW_MARKER
    End If
    ' Настраиваем маркер строки
    With ActiveSheet.Shapes(ROW_MARKER)
        .Top = ActiveCell.Offset(1, 0).Top
        .Left = rng.Left
        .Width = rng.Cells(1, rng.Columns.Count + 1).Left - rng.Left
    End With
    
    ' Создаем маркер столбца, если его нет на листе
    If ThereIsNoLineMarker(COLUMN_MARKER) Then
        CreateMarkerLine COLUMN_MARKER
    End If
    ' Настраиваем маркер столбца
    With ActiveSheet.Shapes(COLUMN_MARKER)
        .Top = rng.Top
        .Left = ActiveCell.Left
        .Height = rng.Cells(rng.Rows.Count + 1, 1).Top - rng.Top
    End With
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Создание маркерных линий, присвоение им определенных имен
'
Private Sub CreateMarkerLine(ByVal markerName As String)
    Dim line As Shape
    Set line = ActiveSheet.Shapes.AddLine(1, 1, 1, 1)
    line.ShapeStyle = msoLineStylePreset10
    line.Name = markerName
End Sub

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Вспомогательная процедура для определения того, создана ли
' уже маркерная линия с указанным именем
'
Private Function ThereIsNoLineMarker(ByVal markerName As String) As Boolean
    Dim sh As Shape
    Dim result As Boolean
    result = True
    
    For Each sh In ActiveSheet.Shapes
        If sh.Name = markerName Then
            result = False
            Exit For
        End If
    Next
    
    ThereIsNoLineMarker = result
End Function

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Выбор диапазона, в котором будут отображаться маркерные линии
'
Private Function ChooseMarkerRange(ByVal Target As Range) As Range
    Dim result As Range
    
    If Not (Target.ListObject Is Nothing) Then
        ' Если выделенная ячейка находится в структурированной
        ' таблице, то подчеркиваем строки и столбцы только в
        ' пределах этой таблицы
        Set result = Target.ListObject.Range
    ElseIf Target.CurrentRegion.Cells.Count > 1 Then
        ' Если выделенная ячейка находится вне таблицы, но в
        ' некотором заполненном диапазоне ячеек, то подчеркиваем
        ' строки и столбцы только в этом диапазоне
        Set result = Target.CurrentRegion
    Else
        ' Во всех остальных случаях подчеркиваем строки и
        ' столбцы только в рамках видимого диапазона
        Set result = ActiveWindow.VisibleRange
    End If

    Set ChooseMarkerRange = result
End Function
}}}
[[source|http://allexcel.info/2015/01/22/%D0%BF%D0%BE%D0%B4%D1%81%D0%B2%D0%B5%D1%82%D0%BA%D0%B0-%D0%B0%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%B9-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8-%D0%B2-excel/]]
<!--{{{-->
<div id='headerArea'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<span id='topRightCorner' refresh='content' tiddler='TopRightCorner'></span>
</div>
<div id='leftSidebar'>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='leftBottom'></div>
</div>
<div id='wideArea'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
!Run GUI program via sudo
Run before:
{{{
xhost si:localuser:root
}}}
/***
|Name|DataDbPlugin|
|Source|http://baggr.tiddlyspot.com|
|Version|0.101|
|Author|molicule [at] gmail [dot] com|
|License|BSD open source|
|Type|plugin|
|Requires|DataDbPlugin|
|Description|Turn a tiddler into a database such as an address book.|
Provides the ability to create and maintain simple databses housed in a tiddler. Requires the DataTidlerPlugin.
!!!!!Usage
<<<
&lt;&lt;datadb name address city state zip&gt;&gt;
<<<
!!!!!How it works
<<<
A form input is provided and the data entered is stored within the tiddler in a JSON format.
This data is read by the plugin and displayed. Convenient actions such as move up, down,
delete and close/unclose are provided.
<<<
!!!!!Data storage format
<<<
<data>{"db": ["list", "of", "fields"]}</data>
<<<
Changelog
<<<
26 Sep 2008 Added export to html feature. This puts the output in a tiddler. Note you need to remove html tag wrapper to
use outside of a tiddler.
!!!!!Code
***/
//{{{
config.datadb = {
    list_refresh: function(title) {
        story.refreshTiddler(title, null, true);
    },
    item_over: function(e) {
        e.style.backgroundColor = "#f0f0f0";
    },
    item_out: function(e) {
        e.style.backgroundColor = "#ffffff";
    },
    show_view: function(title, v) {
        var t = store.getTiddler(title);
        var data = t.data();
        data['view'] = v;
        t.setData("view", data['view']);
        this.list_refresh(title);
    },
    build_head: function(title, view) {
        var txt = "<table style=\"margin:0px\" width=100%><tr><td width=85%>Data db: <u>" + view + " view</u></td><td style=\"text-align:right;\">";
        txt += "<span style=\"cursor:pointer;\" onclick=\"config.datadb.show_view('" + title + "', 'form');\" title=\"Form\" >Δ</span> &nbsp; ";
        txt += "<span style=\"cursor:pointer;\" onclick=\"config.datadb.show_view('" + title + "', 'query');\" title=\"Query\" >∈</span> &nbsp; ";
        txt += "<span style=\"cursor:pointer;\" onclick=\"config.datadb.show_view('" + title + "', 'schema');\" title=\"Schema\" >Ψ</span> &nbsp; ";
        txt += "<span style=\"cursor:pointer;\" onclick=\"config.datadb.show_view('" + title + "', 'tools');\" title=\"Tools\" >ξ</span> &nbsp; ";
        txt += "<span style=\"cursor:pointer;\" onclick=\"config.datadb.show_view('" + title + "', 'help');\" title=\"Help\" >?</span> &nbsp; ";
        txt += "</td></tr></table>";
        return txt;
    },
    build_help: function(title, params, data) {
        var stub = title.replace(/ /g, "_");
        var txt = "<div id=" + stub + "_vhelp>";
        txt += "<iframe src=http://baggr-help.tiddlyspot.com/ width=100% height=600px style=\"border:0px\" frameborder=no></iframe>";
        txt += "</div>";
        return txt;
    }
};
config.datadb.form = {
    about_status: "-",
    build: function(title, params, data) {
        var stub = title.replace(/ /g, "_");
        var txt = "<div id=" + stub + "_vform>";
        txt += this.build_form(title, params, data)
        txt += "</div>";
        return txt;
    },
    item_click: function(title, i) {
        var i = i*1;
        var t = store.getTiddler(title);
        var data = t.data();
        this.load_form(title, data, i);
    },
    item_del: function(title, num) {
        var t = store.getTiddler(title);
        var data = t.data("db");
        data.splice(num*1, 1);
        t.setData("data", data);
        story.refreshTiddler(title, null, true);
    },
    load_form: function(title, data, rnum) {
        var r = data['db'][rnum];
        var stub = title.replace(/ /g, "_");
        var rid = stub + "_num";
        document.getElementById(rid).value = rnum;
        for (var i=0; i<data['schema'].length; i++) {
            var rid = title + "_" + data['schema'][i] + "_" + i.toString();
            document.getElementById(rid).value = r[i];
        }
        // var rid = stub + "_clear";
        // document.getElementById(rid).style.opacity = "1";
        var rid = stub + "_add";
        document.getElementById(rid).style.color = "red";
        document.getElementById(rid).setAttribute("value", "edit");
    },
    form_submit: function(title) {
        return false;
    },
    form_add: function(title) {
        var t = store.getTiddler(title);
        var data = t.data();
        var r = []
        for (var i=0; i<data['schema'].length; i++) {
            var rid = title + "_" + data['schema'][i] + "_" + i.toString();
            r[i] = document.getElementById(rid).value;
        }
        var rid = title.replace(/ /g, "_") + "_num";
        var num = document.getElementById(rid).value;
        if (num) {
            num = num*1;
            data['db'][num] = r;
        } else {
            data['db'].push(r);
        }
        t.setData("db", data['db']);
        story.refreshTiddler(title, null, true);
    },
    form_clear: function(title) {
        var t = store.getTiddler(title);
        var data = t.data();
        var stub = title.replace(/ /g, "_");
        var rid = stub + "_num";
        document.getElementById(rid).value = '';
        for (var i=0; i<data['schema'].length; i++) {
            var rid = title + "_" + data['schema'][i] + "_" + i.toString();
            document.getElementById(rid).value = "";
        }
        // var rid = stub + "_clear";
        // document.getElementById(rid).style.opacity = ".5";
        var rid = stub + "_add";
        document.getElementById(rid).style.color = "black";
        document.getElementById(rid).setAttribute("value", "add");
    },
    show_view: function(title, v) {
        var t = store.getTiddler(title);
        var data = t.data();
        data['view'] = v;
        t.setData("view", data['view']);
        story.refreshTiddler(title, null, true);
    },
    toggle_about: function(title) {
        var stub = title.replace(/ /g, "_");
        if (this.about_status == '+') {
            document.getElementById(stub + "_about").style.height = "18px";
            document.getElementById(stub + "_about_text").style.display = "none";
            this.about_status = "-";
        } else {
            document.getElementById(stub + "_about").style.height = "100px";
            document.getElementById(stub + "_about_text").style.display = "inline";
            this.about_status = "+";
        }
    },
    build_form: function(title, params, data) {
        var stub = title.replace(/ /g, "_");
        var txt = "<div id=" + stub + "_about style=\"background-color:#f0f0f0;margin:5px;padding:5px;overflow:none;min-height:18px\">";
        txt += "<div style=\"float:right;cursor:pointer\" onclick=config.datadb.form.toggle_about('" + title + "')>(+/-)</div>";
        txt += "<div id=" + stub + "_about_text style=\"display:none\">";
        txt += "<h3>This form is where you enter the data</h3>";
        txt += "<b>the first field:</b> is what is displayed in the record selector.<br/>";
        txt += "<b>edit a record:</b> by clicking on it's selector entry and than in the form.<br/>";
        txt += "<b>delete a record:</b> by clicking on the 'x' character.<br/>";
        txt += "<b>clear:</b> clears the form fields and allows you to enter a new record.<br/>";
        txt += "</div>";
        txt += "</div>";
        txt += "<div style=\"float:left;width:30%;min-width:150px;max-height:400px;overflow:auto;border:1px solid #f0f0f0\">";
        txt += "<div style=\"background-color:#a0a0a0\">record selector</div>";
        for (var i=0; i<data['db'].length; i++) {
            txt += "<div ";
            txt += " onmouseover=\"config.datadb.item_over(this)\"";
            txt += " onmouseout=\"config.datadb.item_out(this)\"";
            txt += " onclick=\"config.datadb.form.item_click('" + title + "', '" + i.toString() + "')\"";
            txt += ">";
            txt += "<table width=100% style=\"margin:0px;padding:0px;border:0px\"><tr style=\"border:0px\"><td width=80% style=\"border:0px\">" + data['db'][i][0] + "</td><td style=\"border:0px;text-align:right\"><a href=\"javascript:config.datadb.form.item_del('" + title + "', '" + i + "');\">x</a></td></tr></table>";
            txt += "</div>";
        }
        txt += "</div>";
        txt += "<div style=\"float:left;margin:0px 0px 0px 5px;padding:0px;width:68%;\">";
        txt += "<div style=\"background-color:#a0a0a0;text-align:center\">the record</div>";
        txt += "<form id=" + stub + "_form name=" + stub + "_form onsubmit=\"return config.datadb.form.form_submit('" + title + "');\">";
        txt += "<table width=97%>";
        txt += "<tr><th>Field</th><th>Value</th></tr>";
        txt += "<input id=" + stub + "_num type=hidden value='' >";
        for (var i=0; i<data['schema'].length; i++) {
            txt += "<tr><td width=25%>" + data['schema'][i][0] + "</td><td width=75%><input id=" + title + "_" + data['schema'][i] + "_" + i.toString() + " type=text style=\"width:98%\"></td></tr>";
        }
        txt += "<tr><td colspan=2 style=\"text-align:right;padding:5px\"> <input style=\"opacity:.5;width:75px\" id=" + stub + "_clear type=submit name=clear value=clear onclick=config.datadb.form.form_clear('" + title + "')> <input style=\"width:75px;\" id=" + stub + "_add type=submit name=add value=add onclick=config.datadb.form.form_add('" + title + "')></td></tr>";
        txt += "</table>";
        txt += "</form>";
        txt += "</div>";
        txt += "<div style=\"clear:both\"></div>";
        return txt;
    }
};
config.datadb.schema = {
    props: ["name", "size", "default", "Qview"],
    about_status: "-",
    build: function(title, params, data) {
        var stub = title.replace(/ /g, "_");
        var txt = "<div id=" + stub + "_vschema>";
        txt += this.build_form(title, params, data)
        txt += "</div>";
        return txt;
    },
    item_up: function(title, s) {
        var t = store.getTiddler(title);
        var data = t.data("schema");
        var s = s*1;
        var a = data[s];
        var b = data[s-1];
        data[s] = b;
        data[s-1] = a;
        var db = t.data("db");
        for (var i=0; i<db.length; i++) {
            var a = db[i][s];
            var b = db[i][s-1];
            db[i][s] = b;
            db[i][s-1] = a;
        }
        t.setData("db", db);
        t.setData("schema", data);
        story.refreshTiddler(title, null, true);
    },
    item_down: function(title, s) {
        var t = store.getTiddler(title);
        var data = t.data("schema");
        var s = s*1;
        var a = data[s];
        var b = data[s+1];
        data[s+1] = a;
        data[s] = b;
        var db = t.data("db");
        for (var i=0; i<db.length; i++) {
            var a = db[i][s];
            var b = db[i][s+1];
            db[i][s+1] = a;
            db[i][s] = b;
        }
        t.setData("db", db);
        t.setData("schema", data);
        story.refreshTiddler(title, null, true);
    },
    item_click: function(title, i) {
        var i = i*1;
        var t = store.getTiddler(title);
        var data = t.data();
        this.load_form(title, data, i);
    },
    item_del: function(title, num) {
        var t = store.getTiddler(title);
        var data = t.data("schema");
        data.splice(num*1, 1);
        var db = t.data("db");
        for (var i=0; i<db.length; i++) {
            db[i].splice(num*1, 1);
        }
        t.setData("db", db);
        t.setData("schema", data);
        story.refreshTiddler(title, null, true);
    },
    load_form: function(title, data, rnum) {
        var r = data['schema'][rnum];
        var stub = title.replace(/ /g, "_");
        var rid = stub + "_num";
        document.getElementById(rid).value = rnum;
        for (var i=0; i<this.props.length; i++) {
            var rid = title + "_" + this.props[i] + "_" + i.toString();
            document.getElementById(rid).value = r[i];
        }
        var rid = stub + "_clear";
        document.getElementById(rid).style.opacity = "1";
        var rid = stub + "_add";
        document.getElementById(rid).style.color = "red";
        document.getElementById(rid).setAttribute("value", "edit");
    },
    form_submit: function(title) {
        return false;
    },
    form_add: function(title) {
        var t = store.getTiddler(title);
        var data = t.data();
        var r = []
        for (var i=0; i<this.props.length; i++) {
            var rid = title + "_" + this.props[i] + "_" + i.toString();
            r[i] = document.getElementById(rid).value;
        }
        var rid = title.replace(/ /g, "_") + "_num";
        var num = document.getElementById(rid).value;
        if (num) {
            num = num*1;
            data['schema'][num] = r;
        } else {
            data['schema'].push(r);
            for (var i=0; i<data["db"].length; i++) {
                data["db"][i].push("x");
            }
            t.setData("db", data["db"]);
        }
        t.setData("schema", data['schema']);
        story.refreshTiddler(title, null, true);
    },
    form_clear: function(title) {
        var t = store.getTiddler(title);
        var data = t.data();
        var stub = title.replace(/ /g, "_");
        var rid = stub + "_num";
        document.getElementById(rid).value = '';
        for (var i=0; i<this.props.length; i++) {
            var rid = title + "_" + this.props[i] + "_" + i.toString();
            document.getElementById(rid).value = "";
        }
        var rid = stub + "_clear";
        document.getElementById(rid).style.opacity = ".5";
        var rid = stub + "_add";
        document.getElementById(rid).style.color = "black";
        document.getElementById(rid).setAttribute("value", "add");
    },
    toggle_about: function(title) {
        var stub = title.replace(/ /g, "_");
        if (this.about_status == '+') {
            document.getElementById(stub + "_about").style.height = "18px";
            document.getElementById(stub + "_about_text").style.display = "none";
            this.about_status = "-";
        } else {
            document.getElementById(stub + "_about").style.height = "100px";
            document.getElementById(stub + "_about_text").style.display = "inline";
            this.about_status = "+";
        }
    },
    build_form: function(title, params, data) {
        var stub = title.replace(/ /g, "_");
        var txt = "<div id=" + stub + "_vform>";
        txt += "<div id=" + stub + "_about style=\"background-color:#f0f0f0;margin:5px;padding:5px;min-height:18px\">";
        txt += "<div style=\"float:right;cursor:pointer\" onclick=config.datadb.schema.toggle_about('" + title + "')>(+/-)</div>";
        txt += "<div id=" + stub + "_about_text style=\"display:none\">";
        txt += "<h3>This form is where you enter the fields that your database will have</h3>";
        txt += "<b>name:</b> field name- no spaces<br/>";
        txt += "<b>size:</b> for later use<br/>";
        txt += "<b>default:</b> the default value to use<br/>";
        txt += "<b>Qview:</b> enter y to ensure this field is visble in query view.<br/>";
        txt += "</div>";
        txt += "</div>";
        txt += "<div style=\"float:left;width:35%;min-width:150px;max-height:400px;overflow:auto;border:1px solid #f0f0f0\">";
        txt += "<div style=\"background-color:#ffffe0\">field selector</div>";
        for (var i=0; i<data['schema'].length; i++) {
            txt += "<div ";
            txt += " onmouseover=\"config.datadb.item_over(this)\"";
            txt += " onmouseout=\"config.datadb.item_out(this)\"";
            txt += " onclick=\"config.datadb.schema.item_click('" + title + "', '" + i.toString() + "')\"";
            txt += ">";
            txt += "<table width=100% style=\"margin:0px;padding:0px;border:0px\"><tr style=\"border:0px\"><td width=80% style=\"border:0px\">" + data['schema'][i][0] + "</td>";
            txt += "<td style=\"border:0px;text-align:right\">";
            txt += "<a ";
            if (i>0) {
            txt += "href=\"javascript:config.datadb.schema.item_up('" + title + "', '" + i + "');\"";
            }
            txt += ">";
            txt += "↑</a> &nbsp; ";
            txt += "<a ";
            if (i != data['schema'].length-1) {
            txt += "href=\"javascript:config.datadb.schema.item_down('" + title + "', '" + i + "');\"";
            }
            txt += ">";
            txt += "↓</a> &nbsp; ";
            txt += "<a style=\"color:red;\" href=\"javascript:config.datadb.schema.item_del('" + title + "', '" + i + "');\">x</a>";
            txt += "</td></tr></table>";
            txt += "</div>";
        }
        txt += "</div>";
        txt += "<div style=\"float:left;margin:0px 0px 0px 5px;padding:0px;width:63%;\">";
        txt += "<div style=\"background-color:#ffffe0;text-align:center\">field properties</div>";
        txt += "<form id=" + stub + "_form name=" + stub + "_form onsubmit=\"return config.datadb.schema.form_submit('" + title + "');\">";
        txt += "<table width=97%>";
        txt += "<tr><th>Field</th><th>Value</th></tr>";
        txt += "<input id=" + stub + "_num type=hidden value='' >";
        for (var i=0; i<this.props.length; i++) {
            txt += "<tr><td width=25%>" + this.props[i] + "</td><td width=75%><input id=" + title + "_" + this.props[i] + "_" + i.toString() + " type=text style=\"width:98%\"></td></tr>";
        }
        txt += "<tr><td colspan=2 style=\"text-align:right;padding:5px\"> <input style=\"opacity:.5;width:75px\" id=" + stub + "_clear type=submit name=clear value=clear onclick=config.datadb.schema.form_clear('" + title + "')> <input style=\"width:75px;\" id=" + stub + "_add type=submit name=add value=add onclick=config.datadb.schema.form_add('" + title + "')></td></tr>";
        txt += "</table>";
        txt += "</form>";
        txt += "</div>";
        txt += "</div>";
        txt += "<div style=\"clear:both\">";
        txt += "</div>";
        return txt;
    }
};
config.datadb.query = {
    build: function(title, params, data) {
        var stub = title.replace(/ /g, "_");
        var txt = "<div id=" + stub + "_vquery>";
        txt += this.build_form(title, params, data)
        txt += "</div>";
        return txt;
    },
    item_view: function(e, num, title) {
        var t = store.getTiddler(title);
        var data = t.data('schema');
        if (e.checked){
            data[num][3] = 'y';
        } else {
            data[num][3] = '';
        }
        t.setData("schema", data);
        story.refreshTiddler(title, null, true);
    },
    item_q: function(title) {
        var stub = title.replace(/ /g, "_");
        var t = store.getTiddler(title);
        var data = t.data('zq');
        var rid = stub + "_q";
        data = document.getElementById(rid).value;
        t.setData("zq", data);
        story.refreshTiddler(title, null, true);
    },
    form_submit: function(title) {
        return false;
    },
    build_form: function(title, params, data) {
        var stub = title.replace(/ /g, "_");
        var txt = "<div id=" + stub + "_vform>";
        txt += "<div style=\"float:left;width:100%;\">";
        txt += "<div style=\"background-color:#f0f0f0;margin:5px 2px 2px 2px;padding:10px\">";
        txt += "<div style=\"float:left;width:20%;height:60px;overflow:auto;border:0px solid #000000\">";
        for (var i=0; i<data['schema'].length; i++) {
            txt += "<input type=checkbox onclick=\"config.datadb.query.item_view(this, '" + i.toString() + "', '" + title + "');\"";
            if (data['schema'][i][3] == 'y') {
                txt += " checked ";
            }
            txt += "> ";
            txt += data['schema'][i][0] + "<br/>";
        }
        txt += "</div>";
        txt += "<div style=\"float:left;width:78%;padding-top:20px\">";
        txt += "<form id=" + stub + "_form name=" + stub + "_form onsubmit=\"return config.datadb.query.form_submit('" + title + "');\">";
        txt += "<center><b>Q</b>: <input id=" + stub + "_q name=q value=\"" + data['zq']  + "\" type=text style=\"width:70%\"> <input type=submit value=go onclick=config.datadb.query.item_q('" + title + "')></center>";
        txt += "</form>";
        txt += "</div>";
        txt += "<div style=\"clear:both\"></div>";
        txt += "</div>";
        txt += "<table width=97%>";
        for (var i=0; i<data['schema'].length; i++) {
            if (data['schema'][i][3] != '' || i == 0){
                txt += "<th>" + data['schema'][i][0] + "</th>";
            }
        }
        for (var i=0; i<data['db'].length; i++) {
            showit = true;
            if (data['zq'] != '') {
                showit = false;
                var q = data['zq'].toLowerCase();
                for (var j=0; j<data['db'][i].length; j++) {
                    var qq = data['db'][i][j].toLowerCase();
                    if (qq.indexOf(q) != -1) {
                        showit = true;
                    }
                }
            }
            if (showit) {
                txt += "<tr ";
                txt += " onmouseover=\"config.datadb.item_over(this)\"";
                txt += " onmouseout=\"config.datadb.item_out(this)\"";
                txt += " onclick=\"config.datadb.schema.item_click('" + title + "', '" + i.toString() + "')\"";
                txt += ">";
                for (var j=0; j<data['db'][i].length; j++) {
                    if (data['schema'][j][3] != '' || j == 0){
                        txt += "<td>" + data['db'][i][j] + "</td>";
                    }
                }
                txt += "</tr>";
            }
        }
        txt += "</table>";
        txt += "</div>";
        txt += "</div>";
        txt += "<div style=\"clear:both\"></div>";
        return txt;
    }
};
config.datadb.tools = {
    build: function(title, params, data) {
        var stub = title.replace(/ /g, "_");
        var txt = "<div id=" + stub + "_vtools>";
        txt += this.build_form(title, params, data)
        txt += "</div>";
        return txt;
    },
    xportcsv: function(title) {
        var stub = title.replace(/ /g, "_");
        var rid = stub + "_export_csv";
        extid = document.getElementById(rid).value;
        if (extid != "") {
            var newDate = new Date();
            var t = store.getTiddler(title);
            var data = t.data();
            var h = [];
            for (var i=0; i<data['schema'].length; i++) {
                h.push(data['schema'][i][0]);
            }
            txt = h.join(", ") + "\n";
            for (var i=0; i<data['db'].length; i++){
                txt += data['db'][i].join(", ") + "\n";
            }
            tags = "datadb";
            store.saveTiddler(extid, extid, txt, "datadb", newDate, tags, "", true, newDate);
            story.displayTiddler('top', extid, '', true, '', '', false);
        }
    },
    xporthtml: function(title) {
        var stub = title.replace(/ /g, "_");
        var rid = stub + "_export_html";
        extid = document.getElementById(rid).value;
        if (extid != "") {
            var newDate = new Date();
            var t = store.getTiddler(title);
            var data = t.data();
            var h = [];
            for (var i=0; i<data['schema'].length; i++) {
                h.push(data['schema'][i][0]);
            }
            txt = "<html>\n<table>";
            txt += "<tr><th>" + h.join("</th><th>") + "</th></tr>";
            for (var i=0; i<data['db'].length; i++){
                txt += "<tr><td>" + data['db'][i].join("</td><td>") + "</td></tr>";
            }
            txt += "</table>\n</html>";
            tags = "datadb";
            store.saveTiddler(extid, extid, txt, "datadb", newDate, tags, "", true, newDate);
            story.displayTiddler('top', extid, '', true, '', '', false);
        }
    },
    mport: function(title) {
        var stub = title.replace(/ /g, "_");
        var rid = stub + "_import";
        extid = document.getElementById(rid).value;
        if (extid != "") {
            var t = store.getTiddler(extid);
            var lines = t.text.split("\n");
            var db = [];
            for (var i=0; i<lines.length; i++) {
                if (lines[i].length>1) {
                    if (i==0) {
                        var f = lines[i].split(',');
                        var schema = []
                        for (var j=0; j<f.length; j++) {
                            if (j<3) {
                                schema[j] = [f[j], "", "", "y"];
                            } else {
                                schema[j] = [f[j], "", "", ""];
                            }
                        }
                    } else {
                        var f = lines[i].split(',');
                            var x = [];
                        for (var j=0; j<f.length; j++) {
                            x.push(f[j]);
                        }
                        db.push(x);
                    }
                }
            }
            var t = store.getTiddler(title);
            t.setData("db", db);
            t.setData("schema", schema);
            t.setData("view", "query");
            story.refreshTiddler(title, null, true);
        }
    },
    build_form: function(title, params, data) {
        var stub = title.replace(/ /g, "_");
        var txt = "<div id=" + stub + "_vform>";
        txt += "<div style=\"float:left;width:100%;min-width:300px;max-height:400px;overflow:auto;border:0px solid #f0f0f0\">";
        txt += "<div style=\"background-color:#f0f0f0;margin:5px 2px 2px 2px;padding:10px\">";
        txt += "<fieldset><legend>Export</legend>";
        txt += "<table style=\"border:0px\">";
        txt += "<tr style=\"border:0px\"><td style=\"border:0px\">Export to tiddler (csv):</td><td style=\"border:0px\"><input id=" + stub + "_export_csv type=text name=export_csv value=\"" + stub + "_export_csv\">";
        txt += " <input type=submit value=go onclick=config.datadb.tools.xportcsv('" + title + "')></td></tr>";
        txt += "<tr style=\"border:0px\"><td style=\"border:0px\">Export to tiddler (html):</td><td style=\"border:0px\"><input id=" + stub + "_export_html type=text name=export_html value=\"" + stub + "_export_html\">";
        txt += " <input type=submit value=go onclick=config.datadb.tools.xporthtml('" + title + "')></td></tr>";
        txt += "</table>";
        txt += "</fieldset>";
        txt += "<fieldset><legend>Import</legend>";
        txt += "Import from tiddler (csv): <input id=" + stub + "_import type=text name=import value=\"" + stub + "_import\">";
        txt += " <input type=submit value=go onclick=config.datadb.tools.mport('" + title + "')><br/>";
        txt += "Note: <ul>";
        txt += "<li>This imports data in a csv format from the specified tiddler.</li>";
        txt += "<li>The first line is interpreted to be the field names</li>";
        txt += "<li>Any existing data will be <u>overwritten</u></li>";
        txt += "</ul>";
        txt += "</fieldset>";
        txt += "</div>";
        txt += "</div>";
        txt += "</div>";
        txt += "<div style=\"clear:both\"></div>";
        return txt;
    }
};
config.macros.datadb = {
    handler: function(place,macroName,params, wikifier, paramString, tiddler) {
        var data = tiddler.data();
        if (!data) { data = {}; };
        if (!data['db']) { data['db'] = []; tiddler.setData('db', data['db']); }
        if (!data['schema']) { data['schema'] = [["name","","", "y"]]; tiddler.setData('schema', data['schema']); }
        if (!data['view']) { data['view'] = 'schema'; tiddler.setData('form', data['form']); }
        if (!data['zq']) { data['zq'] = ''; tiddler.setData('zq', data['zq']); }
        var txt = "<table width=92% style=\"margin:0px;padding:0px;border:0px;\"><tr style=\"border:0px\"><td style=\"border:0px\">";
        txt += config.datadb.build_head(tiddler.title, data['view']);
        switch (data['view']) {
            case 'form':
                txt += config.datadb.form.build_form(tiddler.title, params, data);
                break;
            case 'query':
                txt += config.datadb.query.build(tiddler.title, params, data);
                break;
            case 'schema':
                txt += config.datadb.schema.build(tiddler.title, params, data);
                break;
            case 'tools':
                txt += config.datadb.tools.build(tiddler.title, params, data);
                break;
            case 'help':
                txt += config.datadb.build_help(tiddler.title, params, data);
                break;
        }
        txt += "</td></tr></table>";
        wikify("<html> " + txt + " </html>", place);
    }
};
//}}}
Попытка создания объекта Excel (Excel.Application) из задачи, которая выполняется планировщиком под незалогиненым пользователем в win7 заканчивается ошибкой: ''Cannot get or create Excel.Application object.''.
Самое простое решение проблемы:
* Запускать задачу под системным аккаунтом (NT AUTHORITY\SYSTEM)
* Создать каталоги: для x32 - //%~SystemRoot%\System32\config\systemprofile\Desktop//, для x64 - //%~SystemRoot%\~SysWOW64\config\systemprofile\Desktop//.
Ссылки: [[краткое решение|http://serverfault.com/questions/266794/when-ran-as-a-scheduled-task-cannot-save-an-excel-workbook-when-using-excel-app]], [[полное обсуждение проблемы на technet|https://social.technet.microsoft.com/Forums/windowsserver/en-US/aede572b-4c1f-4729-bc9d-899fed5fad02/run-powershell-script-as-scheduled-task-that-uses-excel-com-object]].
/***
|''Name:''|TableSortingPlugin|
|''Description:''|Dynamically sort tables by clicking on column headers|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Source:''|http://tiddlywiki.squize.org/#TableSortingPlugin|
|''Code Repository:''|http://tiddlywiki.squize.org/|
|''Version:''|2.02|
|''Date:''|25-01-2008|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
!!Usage:
* Make sure your table has a header row
** {{{|Name|Phone Number|Address|h}}}<br> Note the /h/ that denote a header row 
* Give the table a class of 'sortable'
** {{{
|sortable|k
|Name|Phone Number|Address|h
}}}<br>Note the /k/ that denotes a class name being assigned to the table.
* To disallow sorting by a column, place {{{<<nosort>>}}} in it's header
* To automatically sort a table by a column, place {{{<<autosort>>}}} in the header for that column
** Or to sort automatically but in reverse order, use {{{<<autosort reverse>>}}}

!!Example:
|sortable|k
|Name |Salary |Extension |Performance |File Size |Start date |h
|ZBloggs, Fred |$12000.00 |1353 |+1.2 |74.2Kb |Aug 19, 2003 21:34:00 |
|ABloggs, Fred |$12000.00 |1353 |1.2 |3350b |09/18/2003 |
|CBloggs, Fred |$12000 |1353 |1.200 |55.2Kb |August 18, 2003 |
|DBloggs, Fred |$12000.00 |1353 |1.2 |2100b |07/18/2003 |
|Bloggs, Fred |$12000.00 |1353 |01.20 |6.156Mb |08/17/2003 05:43 |
|Turvey, Kevin |$191200.00 |2342 |-33 |1b |02/05/1979 |
|Mbogo, Arnold |$32010.12 |2755 |-21.673 |1.2Gb |09/08/1998 |
|Shakespeare, Bill |£122000.00|3211 |6 |33.22Gb |12/11/1961 |
|Shakespeare, Hamlet |£9000 |9005 |-8 |3Gb |01/01/2002 |
|Fitz, Marvin |€3300.30 |5554 |+5 |4Kb |05/22/1995 |

***/
// /%
//!BEGIN-PLUGIN-CODE
config.tableSorting = {
	
	darrow: "\u2193",
	
	uarrow: "\u2191",
	
	getText : function (o) {
		var p = o.cells[SORT_INDEX];
		return p.innerText || p.textContent || '';
	},
	
	sortTable : function (o,rev) {
		SORT_INDEX = o.getAttribute("index");
		var c = config.tableSorting;
		var T = findRelated(o.parentNode,"TABLE");
		if(T.tBodies[0].rows.length<=1) 
			return;
		var itm = "";
		var i = 0;
		while (itm == "" && i < T.tBodies[0].rows.length) {
			itm = c.getText(T.tBodies[0].rows[i]).trim();
			i++;
		}
		if (itm == "") 
			return; 	
		var r = [];
		var S = o.getElementsByTagName("span")[0];		
		c.fn = c.sortAlpha; 
		if(!isNaN(Date.parse(itm)))
			c.fn = c.sortDate; 
		else if(itm.match(/^[$|£|€|\+|\-]{0,1}\d*\.{0,1}\d+$/)) 
			c.fn = c.sortNumber; 
		else if(itm.match(/^\d*\.{0,1}\d+[K|M|G]{0,1}b$/)) 
			c.fn = c.sortFile; 
		for(i=0; i<T.tBodies[0].rows.length; i++) {
			 r[i]=T.tBodies[0].rows[i]; 
		} 
		r.sort(c.reSort);
		if(S.firstChild.nodeValue==c.darrow || rev) {
			r.reverse();
			S.firstChild.nodeValue=c.uarrow;
		} 
		else 
			S.firstChild.nodeValue=c.darrow;
		var thead = T.getElementsByTagName('thead')[0]; 
		var headers = thead.rows[thead.rows.length-1].cells;
		for(var k=0; k<headers.length; k++) {
			if(!hasClass(headers[k],"nosort"))
				addClass(headers[k].getElementsByTagName("span")[0],"hidden");
		}
		removeClass(S,"hidden");
		for(i=0; i<r.length; i++) { 
			T.tBodies[0].appendChild(r[i]);
			c.stripe(r[i],i);
			for(var j=0; j<r[i].cells.length;j++){
				removeClass(r[i].cells[j],"sortedCol");
			}
			addClass(r[i].cells[SORT_INDEX],"sortedCol");
		}
	},
	
	stripe : function (e,i){
		var cl = ["oddRow","evenRow"];
		i&1? cl.reverse() : cl;
		removeClass(e,cl[1]);
		addClass(e,cl[0]);
	},
	
	sortNumber : function(v) {
		var x = parseFloat(this.getText(v).replace(/[^0-9.-]/g,''));
		return isNaN(x)? 0: x;
	},
	
	sortDate : function(v) {
		return Date.parse(this.getText(v));
	},

	sortAlpha : function(v) {
		return this.getText(v).toLowerCase();
	},
	
	sortFile : function(v) { 		
		var j, q = config.messages.sizeTemplates, s = this.getText(v);
		for (var i=0; i<q.length; i++) {
			if ((j = s.toLowerCase().indexOf(q[i].template.replace("%0\u00a0","").toLowerCase())) != -1)
				return q[i].unit * s.substr(0,j);
		}
		return parseFloat(s);
	},
	
	reSort : function(a,b){
		var c = config.tableSorting;
		var aa = c.fn(a);
		var bb = c.fn(b);
		return ((aa==bb)? 0 : ((aa<bb)? -1:1));
	}
};

Story.prototype.tSort_refreshTiddler = Story.prototype.refreshTiddler;
Story.prototype.refreshTiddler = function(title,template,force,customFields,defaultText){
	var elem = this.tSort_refreshTiddler.apply(this,arguments);
	if(elem){
		var tables = elem.getElementsByTagName("TABLE");
		var c = config.tableSorting;
		for(var i=0; i<tables.length; i++){
			if(hasClass(tables[i],"sortable")){
				var x = null, rev, table = tables[i], thead = table.getElementsByTagName('thead')[0], headers = thead.rows[thead.rows.length-1].cells;
				for (var j=0; j<headers.length; j++){
					var h = headers[j];
					if (hasClass(h,"nosort"))
						continue;
					h.setAttribute("index",j);
					h.onclick = function(){c.sortTable(this); return false;};
					h.ondblclick = stopEvent;
					if(h.getElementsByTagName("span").length == 0)
						createTiddlyElement(h,"span",null,"hidden",c.uarrow); 
					if(!x && hasClass(h,"autosort")) {
						x = j;
						rev = hasClass(h,"reverse");
					}
				}
				if(x)
					c.sortTable(headers[x],rev);		
			}
		}
	}
	return elem; 
};

setStylesheet("table.sortable span.hidden {visibility:hidden;}\n"+
	"table.sortable thead {cursor:pointer;}\n"+
	"table.sortable .nosort {cursor:default;}\n"+
	"table.sortable td.sortedCol {background:#ffc;}","TableSortingPluginStyles");

function stopEvent(e){
	var ev = e? e : window.event;
	ev.cancelBubble = true;
	if (ev.stopPropagation) ev.stopPropagation();
	return false;	
}	

config.macros.nosort={
	handler : function(place){
		addClass(place,"nosort");
	}	
};

config.macros.autosort={
	handler : function(place,m,p,w,pS){
		addClass(place,"autosort"+" "+pS);		
	}	
};
//!END-PLUGIN-CODE
// %/
* [[Habrahabr - Визуализация многомерных данных с помощью диаграмм Эндрюса|http://habrahabr.ru/post/248623/]]
* [[Wikipedia - Ирисы Фишера|https://ru.wikipedia.org/wiki/%D0%98%D1%80%D0%B8%D1%81%D1%8B_%D0%A4%D0%B8%D1%88%D0%B5%D1%80%D0%B0]]
!Install on Cygwin
One-liner: {{{if [ "`uname -m`" = "x86_64" ]; then echo "Detected Cygwin x64."; PFIX="x64"; else echo "Detected Cygwin x32."; PFIX="ia32"; fi && echo "Retrieving winpty latest version..." && A=$(curl -sL https://github.com/rprichard/winpty/releases) && RVER=`echo $A | grep -oE '"/rprichard/winpty/tree/[^"]+"' | head -1 | grep -oE '/[^/]+"$' | tr -d '/"'` && echo "Latest winpty version: $RVER" && DLINK=`echo $A | grep -oE '"/rprichard/winpty/releases/download/[^"]+cygwin[^"]+'"-${PFIX}.tar.gz" | head -1 | tr -d '"'` && DLINK="https://github.com$DLINK" && echo "Download link: $DLINK" && echo "Downloading..." && curl -sL "$DLINK" > ~/.winpty.arch.tgz && echo "Extracting..." && tar -C /usr -xvf ~/.winpty.arch.tgz --strip 1 && rm -f ~/.winpty.arch.tgz && echo "Done. Latest winpty installed!"}}}
1. Скачиваем и запускаем на установку [[Google App Engine SDK for Python|https://developers.google.com/appengine/downloads?hl=ru]]
2. Предлагают установить питон. Жмем кнопку "www.python.org", скачиваем последнюю 2.* версию (Windows binary -- does not include source), устанавливаем.
3. Продолжаем установку [[Google App Engine SDK for Python|https://developers.google.com/appengine/downloads?hl=ru]], в конце жмем кнопку "Run Launcher"
4. Скачиваем *.zip архив последней [[giewiki|http://code.google.com/p/giewiki/downloads/list]]
5. Распаковываем архив в любую директорию, редактируем файл "app.yaml", находим там строчку
{{{
application: giewiki-hrd
}}}
в которой заменяем слово "giewiki-hrd" на свой субдомен в *.appspot.com
6. В меню Google App Engine Launcher выбираем File > Add Existing Application...
7. Нажимаем кнопку "Browse...", указываем путь на директорию с распакованной giewiki, жмем кнопку "Add"
8. Выбираем в окошечке только что добавленную giewiki, жмем кнопку "Deploy" на тулбаре, вводим свои данные от Google Account, ждем пока приложение загрузится.
9. Переходим на [[управление своим аккаунтом|http://appengine.google.com/]]
10. Слева переходим на Main > Versions, ставим галочку на нужной версии, жмем кнопку "Make Default"
11. Google App Engine SDK for Python, сам питон и распакованную giewiki теперь можно удалить за ненадобностью.
12. Done.
Физик, математик и инженер стоят в поле. Каждому выдали одинаковое число досок для забора и сказали огородить максимально возможное число
овец.
Инженер построил небольшой, но крепкий загончик в форме квадрата.
Физик построил загон в форме окружности, утверждая что такая форма может вместить больше овец.
Математик построил заборчик по кругу, сам сел в центре, заявляя:
-- Принимаем, что я нахожусь снаружи.

----

Встречаются два друга — как живешь — то се… Один говорит: знаешь, я подсчитал, что вероятность нахождения бомбы на самолете хоть и небольшая, но есть, вот теперь на самолетах я не летаю. Поговорили дальше расстались. Через месяц встречаются в аэропорту — оба с чемоданами. Другой друг: Ты ж говорил, что на самолетах не летаешь. Тот: знаешь, я подсчитал, что вероятность нахождения двух бомб на самолете равно нулю. Другой друг: И что? Тот: Так вот одну я всегда вожу с собой.
* Михаил Гельфанд - Эволюция, Молекулярная эволюция, Клеточная эволюция
* Алексей Водовозов - Журналист-врач-токсиколог, медицина, болезни, действия веществ на организм, ГМО
* Александр Панчин - Псевдонаука в медицине, ГМО
* Вячеслав Дубынин - Нейрофизиолог, клеточный биолог, иммунитет
* [[Елена Павлова|https://www.youtube.com/channel/UCYAarrMEF_VKcTliCpsJ21w]] - философия
* Алексей Яковлев - медицина, болезни
* Юрий Поликанов - клеточный биолог
* Сергей Попов - астроном
config.macros.gatrack={
	handler : function(place,m,p,w,pS){
            if (document.gatracked == undefined) {
                var script = document.createElement('script');
                script.onload = function() {
                    window.dataLayer = window.dataLayer || [];
                    function gtag(){dataLayer.push(arguments);}
                    gtag('js', new Date());
                    gtag('config', 'UA-37815185-1');
                };
                script.async=1;
                script.src = '//www.googletagmanager.com/gtag/js?id=UA-37815185-1';
                document.getElementsByTagName('head')[0].appendChild(script);
                document.gatracked = 1;
            }
	}	
};
URL: https://processhacker.sourceforge.io/downloads.php
!Убрать нотификации от пересоздания сервиса Windows Defender
# Идем в меню {{{Hacker}}}->{{{Plugins...}}}
# Выбираем плагин {{{Extended Notifications}}}, нажимаем кнопку {{{Options...}}}
# Идем в вкладку {{{Services}}}
# Добавляем в ''Exclude'' первым маску: ''~MpKsl*''
Нельзя сказать, что они не любят людей. Просто они очень избирательны.
* Миф 1 — интроверты неразговорчивы.
Это не так. Просто они не говорят, если им нечего сказать. Они не любят пустую болтовню. Если заговорить с ними о чём-то, что их интересует, их невозможно будет остановить.
* Миф 2 — интроверты стеснительны.
Стеснительность не имеет ничего общего с интроверсией. Интроверты не боятся людей, но для контакта им нужна причина. Они не общаются только ради общения. Если хотите поговорить с интровертом, просто заговорите с ним. Не бойтесь показаться невежливыми.
* Миф 3 — интроверты грубы.
Интроверты часто не видят причин для церемоний и обмена любезностями. Они хотят, чтобы все были естественны и честны. К сожалению, это в большинстве случаев неприемлемо, поэтому интровертам стоит иногда больших усилий приспособиться, и это для них утомительно.
* Миф 4 — интроверты не любят людей.
Наоборот, интроверты очень ценят тех нескольких друзей, которые у них есть. Они могут сосчитать близких друзей по пальцам одной руки. Если вам повезло быть другом интроверта, у вас есть верный союзник на всю жизнь. Как только вы заслужили его уважение как содержательный человек, он с вами.
* Миф 5 — интроверты не любят выходить в общество.
Чушь. Интроверты не любят выходить в общество слишком надолго. Они очень быстро усваивают информацию, и поэтому им не нужно проводить много времени в обществе, чтобы быть «в теме». Они пойдут домой, чтобы перезарядиться и переварить полученные впечатления. Перезарядка спокойствием для интровертов жизненно необходима.
* Миф 6 — интроверты всегда хотят быть одни.
Интровертам вполне комфортно наедине со своими мыслями. Они много размышляют. Они мечтают. Им нравится, когда есть проблемы, над которыми они могут работать, задачи, которые они могут решать. Но они также могут чувствовать себя одинокими, если у них нет кого-то, с кем они могут поделиться своими открытиями. Им требуются искренние чистосердечные отношения только с ОДНИМ ЧЕЛОВЕКОМ одновременно.
* Миф 7 — интроверты — странные.
Большинство интровертов — индивидуалисты. Они не идут за толпой. Они предпочитают, чтобы их ценили за их необычный образ жизни. Они думают своей головой и потому часто бросают вызов тому, что считается нормой. Они не принимают решений исходя только из того, что популярно и модно.
* Миф 8 — интроверты — замкнутые чудики.
Интроверты — это люди, которые прежде всего сосредоточены на внутреннем, и уделяют большое внимание своим мыслям и эмоциям. Не то, чтобы они неспособны обращать внимание на происходящее вокруг, просто их внутренний мир гораздо более интересен и полезен для них.
* Миф 9 — интроверты не умеют веселиться и отдыхать.
Интроверты, как правило, отдыхают дома или на природе, а не в шумных общественных местах. Они не любители острых ощущений и не адреналиновые наркоманы. Если вокруг слишком много разговоров и шума, они закрываются.
* Миф 10 — интроверты могут «исправиться» и стать экстравертами.
Мир без интровертов был бы миром с малым количеством учёных, музыкантов, художников, поэтов, кинематографистов, врачей, математиков, писателей и философов. Интроверты не могут «исправиться» и заслуживают уважения за свой врожденный темперамент и пользу, которую они принесли человечеству. Кстати, исследование Silverman (1986) показало, что доля интровертов среди людей с высоким IQ значительно выше.

//источник неизвестен//

!10 вещей, которые нужно знать, если вы любите интроверта.
* Интровертам не нужно все время разговаривать с любимыми
Мы молчаливы, но громкие голоса в наших головах не стихают. Иногда любить нас означает просто уважать тишину, которая нужна нам для нормального функционирования. Нам не нужны тысячи слов, чтобы чувствовать любовь. Нам просто нужны вы рядом, своим молчанием позволяющие быть нам самими собой. Мы наслаждаемся тишиной рядом с вами.
* Интроверты могут выйти за пределы зоны комфорта ради любви
Конечно, мы можем быть иногда экстравертами, но только ради тех людей, которые действительно много значат для нас. Так что когда мы соглашаемся пойти с вами на шумную свадебную вечеринку, нам было бы приятно, если бы вы оценили этот подарок. На следующий день нам может понадобиться время на подзарядку в одиночестве, и если мы ощутим вашу поддержку, то в следующий раз выйдем за пределы зоны комфорта с большим желанием.
* Интроверты открывают свои сердца только самым особенным людям
Если мы выбрали вас, значит, мы уже считаем, что вы стоите того, чтобы рискнуть. Вы одни из тех немногих, кому мы даем увидеть наше внутреннее я. Это делает нас уязвимыми, но некоторые люди стоят того, чтобы рискнуть.
* Интроверты больше ценят, когда их слушают
Слушать — значит показывать нам свою любовь. Мы много думаем, прежде чем начать говорить. Так что если мы чем-то делимся с вами, будьте уверены, это на 100% правда. Мы не относимся к словам легко. Когда мы говорим о чем-то важном, это значит, мы провели до черта времени, обдумывая, и убедились в том, что донесем свою мысль верно и аккуратно. Интроверты — отличные слушатели, и им нравится, когда им оказывают такое же уважение.
* Быть интровертом не значит быть отстраненным в любви
Когда вы любите интроверта, то наверняка часто ощущаете, будто находитесь за пределами его маленького мира. Мы будто в своей собственной Вселенной. Но, если вам однажды дали понять о глубокой связи, знайте, что вы всегда будете частью этой Вселенной. Мы крайне редко рискуем людьми с подобным уровнем доверия. Нет никакого секрета в том, что мы скрываем в наших головах. Мы просто думаем, размышляем, прокручиваем жизнь, постоянно проверяя ее. Это просто часть того, кто мы есть.
* Интроверты часто влюбляются в экстравертов
Мы восхищаемся вами и завидуем одновременно. Мы благоговеем перед вашей способностью располагать к себе людей и очаровывать целые комнаты. Перед легкостью, с которой вы общаетесь с незнакомцами. Это одна из причин, почему нас так тянет к вам. Но это еще и немного пугает. Мы видим в вас тех, кем нам никогда не быть, и беспокоимся о том, что вам скоро станет с нами скучно.
* Лучше дать интроверту подумать, прежде чем вы начнете спорить
Нам нужно время. Мы все прокручиваем в своей голове, тщательно выбираем слова. Поэтому просто ринуться в битву, очертя голову, с интровертами не выйдет. Если мы пытаемся прояснить все на месте, прежде чем будем готовы, то не придем к соглашению с вами. А если сначала обдумаем и только потом обговорим, вы будете точно знать нашу позицию.
* Интроверты мечтают о понимании
Мы рассчитываем на понимание со стороны тех, кого мы любим. Иногда мы действительно слишком долго сидим в своих головах. Иногда мы слишком много думаем о некоторых вещах и нас уносит не туда. Любить кого-то, кто понимает это, помогает нам удерживать связь с этим человеком. Если вам интересно, просто спросите. Мы очень ценим, если вы замечаете это, тянетесь к нам, и тогда мы готовы покинуть свой маленький мир.
* Интровертам нравится веселиться
То, что мы не черпаем энергию в шумных сборищах, не значит, что мы не любим смеяться или веселиться. У интровертов отличное чувство юмора, которое раскрывается среди тех людей, которым они доверяют. Молчаливость не равна занудству и скуке.
* Интровертам нравится знать, что вы счастливы
Мы знаем, что мы другие. Ну или как минимум мы чувствуем, что отличаемся от других. Мы не ждем, чтобы каждый был таким же, как мы, и радовался тем же вещам, что и мы. Но мы хотим сделать вас счастливыми. Нам нужно знать, что вы довольны тем уровнем социальной активности, который мы можем себе позволить, и той глубиной, которой мы делимся с вами. Это сложный баланс — давать людям столько, сколько им нужно, но не больше, чем у нас есть. Мы хотим знать, что делаем что-то, чтобы вы чувствовали себя счастливыми.

//источник неизвестен//
# [[Psycho-Pass|https://ru.wikipedia.org/wiki/Psycho-Pass]] - 22 серии
# [[Rebuild of Evangelion|https://ru.wikipedia.org/wiki/Rebuild_of_Evangelion]] - 3 фильма
# [[Death Note|https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%82%D1%80%D0%B0%D0%B4%D1%8C_%D1%81%D0%BC%D0%B5%D1%80%D1%82%D0%B8]] - 37 серий
# [[Ergo Proxy|https://ru.wikipedia.org/wiki/%D0%AD%D1%80%D0%B3%D0%BE_%D0%9F%D1%80%D0%BE%D0%BA%D1%81%D0%B8]] - 23 серии
# [[Elfen Lied|https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D1%8C%D1%84%D0%B8%D0%B9%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D0%B5%D1%81%D0%BD%D1%8C]] - 13 серий
# [[Hikaru no Go|https://ru.wikipedia.org/wiki/Hikaru_no_Go]] - 75 серий
!Vape-shops
* [[www.wetvapes.com|https://www.wetvapes.com]] - китай
* [[ecigarette.in.ua|http://ecigarette.in.ua]] - магаз рядом с Афина
!Online сервисы
* [[Калькулятор жижи|http://www.vapecraft.ru]]+сборник рецептов
* [[Калькулятор спирали|http://reprova.com/calc/]]
!Ссылки
* [[Обклейка|https://vk.com/topic-103240709_34132579]] мода карбоном, [[тут|https://vk.com/club103240709?w=wall-103240709_1446%2Fall]] контакты.
!Пробники
!!Украинские
|Кофе|- не пошло|
|Лесные ягоды|+ хорошо|
|Персик|вроде пошло|
|Зеленое яблоко кислое|+ хороший, сильный вкус|
|Шоколад|- не пошло|
|Кола|вроде пошло, но вкус слабый|
|Виноград|не помню|
|Абрикос|на помню|
|Вишня Люкс|+ хороший вкус, возможно попалась аромка "Вишня с косточкой"|
|Апельсин|- не пошло|
!!Xi'am табачка
|Xi'an Muren French Pipe|замес вышел неудачным, но надо пробовать|
|Xi'an Muren Cigar|+ семечки+сладость, парить можно|
|Xi'an Muren USA MIX|+ годно, выраженных вкусов нет, все в балансе|
|Black Devil (Китай)|- очень не выражено, слабый вкус|
|Xi'an Muren Parliament||
|Xi'an Muren Davidoff|+- замес был не оч удачный, но вроде как аромка годная, но без выраженных вкусов|
|Xi'an Muren Rothmans|- запах на клопов похож|
|Xi'an Muren Black Devil|+- вкус слабенький, ничего не выражено|
|Xi'an Muren Virginia|- замес неудачный, но вроде как не понравилось|
|Xi'an Muren Ruyan 4|now|
!Фруктовые комбинации
|Название продукта|С чем сочетается|h
|Миндаль|яблоко, абрикос, банан, карамель, вишня, кофе, мед, апельсин, персик, груша, слива|
|Яблоко|карамель, кардамон, каштан, корица, клюква, черная смородина, имбирь, фундук, манго, кленовый сироп, розмарин, грецкий орех|
|Абрикос|миндаль, черный перец, карамель, кардамон, имбирь, фундук, мед, апельсин, персик, ваниль, слива, белое вино|
|Груша|миндаль, яблоко, черный перец, корица, имбирь, мед, макадамия, мускатный орех, ваниль, изюм|
|Банан|бренди, карамель, вишня, шоколад, корица, кофе, темный ром, имбирь, фундук, мед, мадера, манго, черная или фруктовая патока, папайя|
|Черная смородина|абрикос, черный перец, шампанское, корица, цитрусовые, фундук, другие ягоды, персик, слива, портвейн|
|Красный апельсин|миндаль, кардамон, шоколад, корица, гвоздика, имбирь, мед, другие цитрусовые|
|Черника|другие ягоды, кардамон, манго, лимон, фундук, имбирь, лаванда, цитрусовые, листья лимонной вербены, мяты|
|Морковь|анис, бренди, корица, имбирь, мускатный орех, каштан|
|Вишня|абриковс, шоколад, цитрусовые, нектарин, персик, слива, портвейн, ваниль|
|Каштан|яблоко, карамель, шоколад, кофе, груша, ваниль|
|Кориандр|абрикос, ягоды, цитрусовые, нектарин, персик, слива, тропические фрукты|
|Кокос|банан, бразильский орех, карамель, шоколад, цитрусовые, листья кафра, лимонграсс, ананас, другие тропические фрукты|
|Клюква|яблоко, шоколад, корица, цитрусовые, манго, мята, груша|
|Смородина|Крим де Кассис, шоколад, цитрусовые, темный ром, портвейн, джин|
|Бузина|абрикос, инжир, мед, лимон, мандарин, другие ягоды, персик, слива|
|Фейхоа|банан, ягоды, корица, цитрусовые, манго, ваниль|
|Инжир|миндаль, черный перец, корица, цитрусовые, фундук, груша, портвейн, ваниль|
|Имбирь|миндаль, яблоко, абрикос, банан, ягоды, бразильский орех, карамель, шоколад, цитрусовые, кокос, виноград, маракуйя, персик, груша, ананас, слива, тропические фрукты|
|Крыжовник|цитрусовые, фундук, мед, другие ягоды, белый шоколад|
|Виноград|бренди, шоколад, цитрусовые, имбирь, изюм|
|Грейпфрут|базилик, черный перец, карамель, другие цитрусовые, мята, розмарин, чабрец, тропические фрукты, ваниль|
|Гуава|цитрусовые, кокос, черника, листья кафра, ананас, клубника, тропические фрукты|
|Фундук|яблоко, абрикос, банан, ягоды, карамель, вишня, шоколад, цитрусовые, инжир, мандарин, груша, персик, слива|
|Киви|яблоко, банан, ягоды, вишня, цитрусовые, кокос, манго, тропические фрукты|
|Кумкват|ягоды, вишня, шоколад, корица, кофе, хурма, слива|
|Лимон|абрикос, ягоды, черный перец, кардамон, вишня, цитрусовые, имбирь, нектарин, груша, слива, тропические фрукты|
|Лайм|яблоко, ягоды, вишня, имбирь, папайя, слива, клубника, тропические фрукты|
|Личи|цитрусовые, имбирь, крыжовник, тропические фрукты, ваниль|
|Мандарин|кардамон, вишня, шоколад, кофе, инжир, имбирь, мускатные орех, тропические фрукты, ваниль, анис|
|Манго|яблоко, банан, ягоды, карамель, цитрусовые, кокос, дыня, белое вино, тропические фрукты, ваниль|
|Дыня|ягоды, шампанское, цитрусовые, лимонграсс|
|Апельсин|миндаль, базилик, ягоды, бренди, вишня, шоколад, кинза, корица, кофе, клюква, инжир, имбирь, виноград, фундук, мята, мускатный орех, хурма, ананас, ваниль|
|Папайя|цитрусовые, черный перец, лайм, манго, тропические фрукты|
|Ананас|базилик, карамель, кинза, кокос, макадамия, розмарин, ром, тропические фрукты|
|Слива|миндаль, корица, цитрусовые, каштан, черный перец, фундук, мед, портвейн, ваниль|
|Гранат|яблоко, цитрусовые, огурец, мята, тропические фрукты|
|Малина|абрикос, корица, цитрусовые, имбирь, лимон, нектарин, другие ягоды, персик, слива, ревень|
|Ревень|яблоко, абрикос, ягоды, черный перец, цитрусовые, имбирь, нектарин, персик, слива, клубника|
|Клубника|яблоко, черный перец, шоколад, цитрусовые, кориандр, мята, ревень, ваниль|
|Грецкий орех|яблоко, абрикос, банан, карамель, шоколад, корица, нектарин, персик, груша, слива, ром|
|Хурма|яблоко, корица, цитрусовые, кумкват, груша|
!Notes
* 11 витков никеля спейскойла на 3мм = 0.2ом - отлично
* 13 витков никеля спейскойла на 4мм = 0.3ом - вообще замечательно. Койлы ставить по-ниже. Жижу с большим vg.
!Убрать проверку места на диске
{{{
cluster.routing.allocation.disk.threshold_enabled: false
}}}
* подробнее: https://www.elastic.co/guide/en/elasticsearch/reference/current/disk-allocator.html
1. Идем на закачку [[kbs|http://sourceforge.net/projects/kbskit/files/kbs/]]
2. Скачиваем нужные ''~WindowsNT_kbsvq*.exe'' файлы (*smk*.exe требуют для своей работы дополнительно  libstdc++-6.dll)
3. Скачиваем последний [[sdx*.kit|http://code.google.com/p/tclkit/downloads/list]]
4. Делаем копию ''~WindowsNT_kbsvq*.exe'' как ''kbs.exe''
5. Переименовываем ''sdx*.kit'' в ''sdx.kit''
6. Разбиваем наш кит запуская ''kbs.exe sdx.kit mksplit ~WindowsNT_kbsvq*.exe''
7. Получаем исходники кита запуская ''kbs.exe sdx.kit unwrap ~WindowsNT_kbsvq*.exe''
8. В ''~WindowsNT_kbsvq*.vfs/lib/dde1.4'' (и ''reg1.3'') правим ''pkgIndex.tcl'' оставляя только строчку для загрузки dll
9. Удаляем ''~WindowsNT_kbsvq*.exe''
10. Собираем все вместе командой ''kbs.exe sdx.kit wrap ~WindowsNT_kbsvq*.exe -runtime ~WindowsNT_kbsvq*.head''
11. Удаляем ''~WindowsNT_kbsvq*.tail''

В итоге имеем:
1. Рабочий runtime.head 
2. Шаблон со всеми нужными для рантайма библиотеками в *.vfs
3. рабочий tclkit
и рабочий tclkit.
!Commands
|Command|Description|h
|vboxmanage list vms|List registered ~VMs|
|vboxmanage list runningvms|List running ~VMs|
|vboxheadless -s <vm id&#x7c;vm name> |Start VM|
!Install ext-pack on Linux
{{{
VBOXVERSION=`VBoxManage --version | sed -r 's/([0-9])\.([0-9])\.([0-9]{1,2}).*/\1.\2.\3/'`
wget -q -N "http://download.virtualbox.org/virtualbox/$VBOXVERSION/Oracle_VM_VirtualBox_Extension_Pack-$VBOXVERSION.vbox-extpack"
sudo VBoxManage extpack install --replace Oracle*.vbox-extpack
}}}
/***
|''Name:''|YouTubePlugin|
|''Description:''|Facilitates embedding youtube content with optional subtitles|
|''Documentation:''|[[YouTubePlugin documentation]]|
|''Requires:''|[[SWFObjectPlugin]]|
|''Version:''|1.1.2|
|''Date:''|Jan 22, 2011|
|''Source:''|http://giewiki.appspot.com/plugins/YoutubePlugin|
|''Author:''|PoulStaugaard (poul (dot) staugaard (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Chrome; Safari; Firefox; InternetExplorer 6.0|
***/

//{{{
config.macros.youtube = {
	textLocation: {},
	handler: function (place, macroName, params, wikifier, paramString) {
		if (params.length == 0)
			throw("Missing required parameter: youtube video id");
		var vid = params.shift(); // parameter 1: youtube video id
		var t = place;
		while (t.tagName != 'td' && !t.className.startsWith('tiddler') && t.parentNode)
			t = t.parentNode;
		var cw = t.offsetWidth;
		var w = cw;
		var rh = 80;
		if (params.length > 0) { // parameter 2: width,relative-height%
			var a2 = params[0];
			if (a2 == 'text-location') {
				var tn = story.findContainingTiddler(place).getAttribute('tiddler');
				config.macros.youtube.textLocation[vid] = createTiddlyElement(place,'span', tn + 'textViewer');
				return;
			} else {
				var dims = a2.split(',');
				var da = dims.shift();
				var na = parseInt(da);
				if (!isNaN(na)) {
					params.shift();
					if (da.right(1) != '%') {
						w = na; da = dims.shift();
						}
					if (da && da.right(1) == '%')
						rh = da.slice(0,da.length-1);
				}
			}
			if (w < 0) {
				w = 0 - w;
				if (w > cw)
					w = cw;
			}
		}
		var h = w * rh / 100;
		var playButton = false;
		var ats = {};
		var aus = {};
		var tstn = null;
		var plwdClass = 'youtubePlayer';
		var nochrome = false;
		var altLabel = "YouTube/" + vid;
		for (var opt = params.shift(); opt; opt = params.shift()) {
			if (opt == 'class') // Player wrapper div class
				plwdClass = params.shift();
			else if (opt == 'chromeless')
				nochrome = true;
			else if (opt == 'altlabel')
				altLabel = params.shift();
			else if (opt == 'play' || opt  == 'time' || opt == 'text') { // options: auto-play / transcript
				aus[opt] = true;
				if (opt == 'time' || opt == 'text') {
					tstn = params.shift(); // transcript TiddlerName
					if (!tstn)
						return displayMessage("Missing parameter: TextTiddlerName");
				}
				var vpid = null;
				var iv = window.setInterval(function() {
					try {
						if (tstn && !aus.textLocation)
							config.macros.youtube.setupData(aus,tstn,ats,config.macros.youtube.textLocation[vid],vid);
							 
						var player = document.getElementById(vid);
						if (!player)
							return window.clearInterval(iv); // stop working
						var ps = player.getPlayerState();
						//if (ps != aus.ps) { displayMessage("State " + ps); aus.ps = ps; }
						switch (ps) {
							case -1: // unstarted
							case 5:
								if (aus.play)
									player.playVideo();
								if (!aus.transcript && !aus.text) break;
								return;
							case 0: // ended
								clearMessage();
								if (aus.changes) config.macros.youtube.updateTiming(aus);
								break;
							case 1: // playing
								var t = player.getCurrentTime();
								for (at in ats) {
									if (t > at) {
										removeChildren(aus.textLocation);
										wikify(ats[at],aus.textLocation); //-or-: aus.textLocation.innerHTML = ats[at];
									}
								}
								return;
							case 2: // paused
								if (aus.changes) config.macros.youtube.updateTiming(aus);
								return;
							case 3: // buffering
								return;
							//case 5: // cued
								return;
						}
						window.clearInterval(iv);
						} catch (x) {
						}
					},33);
			}
			else if (opt == 'label' && macroName == 'youtube')
				playButton = params.shift();
		}
		if (playButton)
			return createTiddlyButton(place, playButton, null, config.macros.youtube.onClick, "linkbutton", null, null, { args: paramString });

		var pen = 'pd'+vid;
		var wd = createTiddlyElement(place,"div",pen,plwdClass,null);
		if (!swfobject.getFlashPlayerVersion().major)
			wd.innerHTML = '<a href="http://www.youtube.com/v/' + vid + '">' + altLabel + '</a>';
		else {
			var pUrl = nochrome ? 'http://www.youtube.com/apiplayer?video_id=' + vid + '&version=3&enablejsapi=1&playerapiid=ytplayer'
						: 'http://www.youtube.com/v/' + vid + '?enablejsapi=1&playerapiid=ytplayer';
			swfobject.embedSWF( pUrl, pen, w, h, '8', null, null, { allowScriptAccess: 'always' }, { id: vid });
		}
	},
	onClick: function(ev) {
		var t = resolveTarget(ev || window.event);
		var args = t.getAttribute('args');
		config.macros.youtube.handler(t, 'youtubePlay',args.readMacroParams(), null, args);
	},
	setupData: function(aus,tstn,ats,tl,vid) {
		if (!tl) {
			var evid = document.getElementById(vid);
			if (!evid.nextSibling)
				insertAfter(evid,document.createElement('br'));
			tl = insertAfter(evid.nextSibling,document.createElement('span'));
		}
		aus.textLocation = tl;
		var tstext = store.getTiddlerText(tstn);
		if (tstext == null)
			return displayMessage("Tiddler '" + tstn + "' not found");
		var tsls = tstext.split('\n');
		for (var i=0; i < tsls.length; i++) {
			var tsl = tsls[i];
			if (aus.text && tsl.startsWith('|')) { // build timing array from table of lines: |time|Text|
				var lps = tsl.split('|');
				if (lps.length > 2) {
					var it = parseInt(lps[1]);
					if (it > 0) ats[it] = lps[2];
				}
			}
			else if (aus.time) {
				if (!aus.transcript) {
					aus.transcript = tstn;
					aus.time = {};
					story.displayTiddler(null,tstn,DEFAULT_EDIT_TEMPLATE);
				}
				var tsde = aus.textLocation; //document.getElementById(tsDiv);
				if (tsde == null)
					return displayMessage("text-location not found"); //"Element " + tsDiv + " not found");
				var lid = vid + '_' + i;
				var lel = createTiddlyElement(tsde,'a',lid,null,tsl, { 'href': 'javascript:;' });
				aus.time[lid] = { text: tsl };
				lel.onclick = function(ev) {
					var me = resolveTarget(ev || window.event);
					var player = document.getElementById(vid);
					aus.time[me.id].time = player.getCurrentTime();
					aus.changes = true;
					displayMessage(aus.time[me.id].time + ": " + aus.time[me.id].text);
				}
				createTiddlyElement(tsde,'br');
			}
		}
	},
	updateTiming: function(aus) {
		var tta = aus.time;
		var atb = [];
		for (ali in tta) {
			var time = tta[ali].time;
			var text = tta[ali].text;
			if (time && time > 0) {
				var tlps = text.split('|');
				if (tlps.length == 4) {
					tlps[1] = time;
					atb.push(tlps.join('|'));
				} else
					atb.push('|' + time + '|' + text + '|');
			} else
				atb.push(text);
		}
		var tstn = aus.transcript;
		if (tstn) {
			var tiddlerElem = story.getTiddlerField(tstn,'text');
			if (tiddlerElem) {
				tiddlerElem.value = atb.join('\n');
				displayMessage(tstn + " updated");
			} else
				displayMessage(atb.join("<br>"));
			aus.changes = false;
		}
	}
}
//}}}
1. Заинсталить в cygwin пакетами: ''python3'' и ''pip3''
2. {{{pip install jsbeautifier}}}
3. Перекодировать с cp1251 на utf-8 (если нужно): {{{find . -name "*.js" -exec recode cp1251..utf8 {} \;}}}
4. Забьютифулить: {{{find . -name "*.js" -exec js-beautify -r {} \;}}}
{{{
https://www.youtube.com/embed/5YCZxtHDk7k?rel=0&start=300;end=4200
}}}
* rel:0 - не воспроизведить похожие после окончания воспроизведения
* start:300 - в секундах, начало воспроизведения
* end:4200 - в секундах, конец воспроизведения

Другие опции: [[https://sergeychunkevich.com/dlya-web-mastera/youtube-parametry/|https://sergeychunkevich.com/dlya-web-mastera/youtube-parametry/]]
!Исходник и примеры
* [[https://github.com/Windos/BurntToast|https://github.com/Windos/BurntToast]]
!Запустить powershell от админа, выполнить там:
{{{
Install-Module -Name BurntToast
set-executionpolicy remotesigned
}}}
!Скрипт notify.ps1
{{{
Import-Module BurntToast
New-BurntToastNotification -Text 'New build ready'
}}}
!Запуск
{{{
powershell -ExecutionPolicy ByPass -File notify.ps1
}}}
или с полным путем:
{{{
/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy ByPass -File notify.ps1
}}}
!IT
* [[ADV-IT|https://www.youtube.com/channel/UC-sAMvDe7gTmBbub-rWljZg/playlists]] - лекции по k8s, terraform, GCP, AWS, Python, Ansible, Jenkins
* [[Janakiram MSV|https://www.youtube.com/user/janakirammsv/videos]] - очень информативные лекции по отдельным аспектам k8s, 
!Languages
* [[Virginia Bēowulf · English Studies|https://www.youtube.com/channel/UCKMGLK-Inu1lReNdbeYBgOA/videos]] - интересные и полезные нюансы английского языка
* [[Learn Thai with ThaiPod101.com|https://www.youtube.com/user/ThaiPod101/playlists]] - Тайский язык
* [[Eko Languages|https://www.youtube.com/channel/UCGBvI8xXfyPWVXYRnvbe7rw/videos]] - Ролики на 3 часа с частыми фразами для разных языков, есть Английский, Немецкий, Тайский и другие.
!Форматирование
* [[http://twhelp.tiddlyspot.com/|http://twhelp.tiddlyspot.com/]]
!Добавить plugin
# Забрать исходник плагина
# Сделать новый тидлер journal с тэгом ''systemConfig'' и титлом с именем плагина
# done, save, rehash
# PROFIT
!Tablespaces, Free\Used
{{{
select
    b.tablespace_name,
   tbs_size "Size GB",
   a.free_space "Free GB",
   100 - round(100*((tbs_size - a.free_space)/tbs_size)) "Free %"
from
(
    select tablespace_name, round(sum(bytes)/1024/1024/1024,2) as free_space
    from dba_free_space
    group by tablespace_name
) a,
(
    select tablespace_name, round(sum(bytes)/1024/1024/1024,2) as tbs_size
    from dba_data_files group by tablespace_name
    UNION
    select tablespace_name, round(sum(bytes)/1024/1024/1024,2) as tbs_size
    from dba_temp_files
    group by tablespace_name
) b
where a.tablespace_name(+)=b.tablespace_name
order by 1
}}}
!Волшебные команды для получения детальных и скрытых настроек оптимизатора:
Запустить sqlplus <user>/<password>
{{{
SQL> ALTER SESSION SET EVENTS '10053 trace name context forever,level 1';

Session altered.

SQL> alter session set tracefile_identifier=CR758708_2;

Session altered.

SQL> alter session set max_dump_file_size=unlimited;

Session altered.

SQL> explain plan for SELECT * FROM ......
}}}
Искать в директории оракла файл "*~CR758708_2.trc"
!Показать сессии у которых параметры отличаются от дефолтных и какие отличия
{{{
select a.sid,c.username,a.name,a.value 
from v$ses_optimizer_env a 
join v$sys_optimizer_env b on a.id=b.id 
join v$session c on a.sid=c.sid 
where a.value<>b.value
and c.username is not null
and c.username not in ('SYS','SYSTEM','DBSNMP') 
order by a.sid,a.name;
}}}
!Показать прогресс импорта через "impdb"
{{{
select x.job_name,b.state,b.job_mode,b.degree
, x.owner_name,z.sql_text, p.message
, p.totalwork, p.sofar
, round((p.sofar/p.totalwork)*100,2) done
, p.time_remaining
from dba_datapump_jobs b
left join dba_datapump_sessions x on (x.job_name = b.job_name)
left join v$session y on (y.saddr = x.saddr)
left join v$sql z on (y.sql_id = z.sql_id)
left join v$session_longops p ON (p.sql_id = y.sql_id)
WHERE y.module='Data Pump Worker'
AND p.time_remaining > 0;
}}}
!Используемое место в базе
!!Сколько использует определенный юзер
{{{
select distinct tablespace_name,round(sum(bytes)/(1024*1024),2) MB
from dba_segments
where owner = 'CHRONIC3_80'
group by tablespace_name;
}}}
!!Сколько используют все юзеры
{{{
select distinct owner,tablespace_name,round(sum(bytes)/(1024*1024),2) MB
from dba_segments
group by owner,tablespace_name
order by owner,tablespace_name;
}}}
!Системное
# [[LuckyPatcher|http://4pda.ru/forum/index.php?showtopic=298302]] - для взломанного маркета и отключение проверки лицензии у приложений
# [[Freedom|http://4pda.ru/forum/index.php?showtopic=411446]] - для покупок внутри приложений
!Приложения
# [[RealCalc Scientific Calculator|http://4pda.ru/forum/index.php?showtopic=148582]] - калькулятор
# [[Mobile Doc Scanner|http://4pda.ru/forum/index.php?showtopic=339715]] - сканер документов
!Select complete ~URLs (https://tech.arantius.com/select-urls-in-putty)
# Open the "Window -> Selection" section of a ~PuTTY session configuration.
# Scroll the "Character Classes" box therein down to the colon (comes just after the digits).
# Select it, type "2" in the "set to class" box and click "Set".
* Registry: find the ~PuTTY key in the registry, and for each session key in that, set the "Wordness32" value to "0,1,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1". This is the default setting plus the colon in class two.
* ktx:
{{{
Wordness32\0,1,2,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1\
}}}

!Connect to ancient systems
{{{
$ scp -oKexAlgorithms=+diffie-hellman-group1-sha1 -c 3des-cbc * build@ecbuild-sol1:/tmp/os
}}}
1. Create patch between "dir" and "dir.new"
{{{
diff -Naur dir/ dir.new/ > my.patch
}}}
2. Apply patch
{{{
patch -p0 < my.patch
}}}
!Links
!!Useful guides
* [[Image guidelines from OCP (OpenShift Container Platform)|https://docs.openshift.com/container-platform/4.4/openshift_images/create-images.html]], возможно, это будет не самая последняя версия документа, перейти на актуальную версию
* [[Running Dockerized GoCD Containers as Non Root|https://www.gocd.org/2019/06/25/GoCD-non-root-containers/]] - мануал от поставщика софта для кастомеров с описанием, как работают их контейнеры в non-root режиме, какие изменения были в связи с этим, что и как делать кастомерам для корректного запуска в non-root режиме
* [[Guidance for Docker Image Authors from Atomic Project|http://www.projectatomic.io/docs/docker-image-author-guidance/]] - некотороые хинты для образов. Их немного, но они полезные.
!Registry
!!View all repositories
{{{
curl -s http://localhost:5000/v2/_catalog | jq -r '.["repositories"][]'
}}}
!!View all images with tags
{{{
curl -s http://localhost:5000/v2/_catalog | jq -r '.["repositories"][]' | xargs -I @REPO@ curl -s http://localhost:5000/v2/@REPO@/tags/list | jq -M '.["name"] + ":" + .["tags"][]'
}}}
!Win-containers on Linux
* ~Win16-Vagrant VM with docker - [[https://github.com/StefanScherer/windows-docker-machine]]
* ~Win16server-Vagrant VM with docker - [[https://github.com/StefanScherer/insider-docker-machine]]
* How to build own base ~Win-Vagrant box - [[https://github.com/StefanScherer/docker-windows-box]]
!Устранение траблов
После запуска StefanScherer делаются файлы в C:\Documents and Settings\<user>\.docker\machine\machines\windows
Заменить там в config.json в путях все "/" на "\". Потом заменить все "\" на "\\".
!Win-containers - Build
* [[How to Dockerize Windows Applications: The 5 Steps|https://blog.sixeyed.com/how-to-dockerize-windows-applications/]] - with example Dockerfiles
!!Example Dockerfiles
* [[https://github.com/sixeyed/nerd-dinner/blob/dockerize-part2/docker/web/Dockerfile]], [[https://github.com/sixeyed/nerd-dinner/blob/dockerize-part2/docker/db/Dockerfile]], [[https://github.com/sixeyed/nerd-dinner/blob/dockerize-part2/docker/docker-compose.yml]]
* [[https://github.com/nats-io/nats-docker/blob/master/windows/nanoserver/Dockerfile]], [[https://github.com/nats-io/nats-docker/blob/master/windows/windowsservercore/Dockerfile]]
!Cygwin issues
* Для запуск Docker-контейнеров с терминалом под cygwin, необходимо поставить [[winpty]]
0. [[chocolatey|https://chocolatey.org/install]]
1. [[VirtuaWin]] - менеджер виртуальных десктопов
2. [[keyla|http://code.google.com/p/keyla/]] - переключатель раскладки по ~CapsLock
3. [[AutoRuns|http://technet.microsoft.com/ru-ru/sysinternals/bb963902.aspx]] из Sysinternals - менеджер автозапуска
4. [[Process Hacker]] - замена диспетчеру задач (есть portable, до него использовался [[Process Explorer|http://technet.microsoft.com/en-us/sysinternals/bb896653]] из Sysinternals) 
5. [[Greenshot|http://getgreenshot.org/]] - адекватная скриншотилка
6. [[ColorMania|http://www.blacksunsoftware.com/colormania.html]] - пипетка/подбор цвета
7. [[BlueScreenView|http://www.nirsoft.net/utils/blue_screen_view.html]] - просмотр дампов при BSOD
8. [[MycView|http://myc01.free.fr/mycview/]] - мелкий просмотр картинок JPEG, PNG, GIF, TIFF, BMP, DIB, RLE, PNM, EMF, WMF, ICO, CUR
9. [[AutoHideMouseCursor|http://www.softwareok.com/?Download=AutoHideMouseCursor]] - скрывает курсор мышки, если мышь не используется
10. [[Airytec Switch Off|http://www.airytec.com/en/switch-off/]] - мелкий планировщик зачач, в т.ч. выключение по расписанию (есть portable)
11. [[TrID|http://mark0.net/soft-trid-e.html]] - определение формата/типа файла по внутреннему содержанию. (native portable)
12. [[Чистилка|http://chistilka.com/]] - быстрая очистка от adware
13. --[[STDU Viewer|http://www.stdutility.com/stduviewer.html]] - универсальный просмотрщик текстов в разных форматах (pdf,  djvu, fb2, epub, psd, mobi и другие)-- заменен на Sumatra PDF, ибо глючит в вин10
13a. [[Sumatra PDF|https://github.com/VictorVG/Software/releases]] - просмотр PDF, ePub, MOBI, XPS, ~DjVu, CHM, CBZ, CBR и CBT. Ставить сборку от ~VictorVG по этой ссылке. Тема на [[ru-board|http://forum.ru-board.com/topic.cgi?forum=5&topic=22740]].
14. --[[aaICO|http://www.xceedz.com/aaICO_Freeware_Icon_Editor.htm]] - редактор *.ico файлов. Нужна dll - msvbvm50.dll, забрать в интернетах и положить в директорию к экзешнику, например, отсюда - [[https://wikidll.com/microsoft/msvbvm50-dll|https://wikidll.com/microsoft/msvbvm50-dll]]-- заменен на ~IcoFX
15. [[CarotDAV|http://rei.to/carotdav_en.html#download]] - клиент для облачных сервисов, в т.ч. ~WebDAV/ftp (есть portable) .Net2.0
16. [[SAS.Планета|http://sasgis.ru/]] - все интернет-карты в одном флаконе
17. [[mp3DirectCut|http://mpesch3.de1.cc/mp3dc.html]] - редактор для рингтонов
18. [[Resilio Sync Home|https://www.resilio.com/individuals/]] - синхронизатор файлов между устройствами
19. [[Daum PotPlayer|http://forum.ru-board.com/topic.cgi?forum=5&topic=48299]], сборка от 7sh3 - видео плеер
20. [[µTorrentPro|http://forum.ru-board.com/topic.cgi?forum=35&topic=49617]] варезник, нужна аунтификация. Если версия портативная, после распаковки зайти в настройки и активировать файловые ассоциации. Поставить для экзешника галку "выполнять в режиме совместимости с XP ~SP3". Поставить нужные каталоги для файлов вне системного диска.
21. [[SoftEther VPN|https://www.softether.org/]]
22. [[TeamViewer|https://www.teamviewer.com/en/download/windows/]]
* После инсталяции, правокликнуть на уродливую кнопку ~QuickConnect на заголовке окна любого приложения и отключить эту функцию.
* В настройках->дополнительно - убрать галку "Разрешить проверку состояния интегрированной системы", включить "запретить закрытие ~TeamViewer", поставить драйвер монитора
23. [[Unlocker|http://emptyloop.com/unlocker/]]
24. [[UltraISO|http://forum.ru-board.com/topic.cgi?forum=35&topic=29992]] - варезник, нужна аунтификация
25. [[WinRAR|http://forum.ru-board.com/topic.cgi?forum=2&topic=2272]] - варезник, нужна аунтификация
26. [[7-zip|http://7-zip.org.ua/ru/download.html]]
27. Для Microsoft Office 2007 Enterprise использовать репак от ~KpoJIuK, искать на nnm
* [[Keep Outlook Running|https://sourceforge.net/projects/keepoutlook/]] - Надстройка для Outlook для сворачивания в трей при закрытии. (для офиса2016 - не работает) Инструкция по устанокве - в описании программы на главной странице sourceforge. Для того, что бы убрать Outlook из таскбара - правокликнуть на иконку в трее и отметить там "Скрывать свернутое"/"Hide when minimized".
* [[ReliefJet Quick Tweaks|https://www.reliefjet.com/Download]] - Дает возможность сворачивать по закрытию в Outlook 2016. После установки Quick Tweaks - появится новая вкладка в Outlook. В настройках можно поставить - минимизировать по закрытию. 
* Для того, что бы вернуть в ms office 2013+ инструмент Miscoroft Office Picture Managet, необходимо поставить Microsoft ~SharePoint Designer 2010. [[Тут|http://www.askvg.com/how-to-install-and-get-microsoft-office-picture-manager-back-in-office-2013/]] - описание что да как и ссылки. Возможно, стоит попробовать ставить ~SharePoint Designer 2013.
28. [[DejaVu|https://dejavu-fonts.github.io/Download.html]] шрифты. Забрать dejavu-fonts-ttf-*.zip, распаковать, отметить все, правоклик->заинсталить
29. [[Punto Switcher|http://forum.ru-board.com/topic.cgi?forum=5&topic=35163]] - ставить сборку elchupakabra с ru-board, отключена всякая хренотень
30. [[kitty]] - фичастый putty
31. [[regshot|https://sourceforge.net/projects/regshot/]] - снапшоты реестра и их сравнение
32. [[OnTopReplica|https://github.com/LorenzCK/OnTopReplica]] - показывать уменьшенную копию какого либо окна с live update/прозрачностью и т.д. (живая миниатюра) - open source но не поддерживается и очень старое
33. [[Sticky Previews|https://www.ntwind.com/software/sticky-previews.html]] - аналог [[OnTopReplica|https://github.com/LorenzCK/OnTopReplica]], но shareware
34. [[NetLimiter 4|https://www.netlimiter.com/download]] - мониторинг трафика по приложениям и ограничение трафика (варез, ру-борд)
35. [[EasyNetMonitor|http://nicekit.com/net-monitor/best-free-net-monitor.htm]] - простой пинговальщик, живущий в systray
36. [[vnote|https://github.com/tamlok/vnote#downloads]] - редактор markdown
37. [[CintaNotes|http://cintanotes.com]] - быстрые заметки, куплен
38. [[QTranslate|http://quest-app.appspot.com/home]] - переводчик/словарь
39. [[ditto]] - манагер clipboard, ставить портабл что бы не терять свои custom settings
40. [[SetACL Studio|https://helgeklein.com/setacl-studio/]] - более-менее адекватная утилита для управления разрешениями на файлы, реестр и другие сущьности
41. [[winscp|https://winscp.net/eng/download.php]] - ну то понятно
42. [[Ethervane ActiveHotkeys|http://www.donationcoder.com/forum/?topic=18189.msg162881]] - детектирует какие хоткеи глобально заняты процессами в Windows
43. [[Sonic Visualiser|https://www.sonicvisualiser.org/download.html]] - визуализатор спектра для аудио файлов
44. [[JPEGCrops|http://ekot.dk/programmer/JPEGCrops/]] - удобный кроп для фотографий
45. [[IcoFX|http://www.321download.com/LastFreeware/page40.html#IcoFX]] - фриварный радектор иконок, довольно удобный
!UI
1. True Launch Bar - куплен
* Забрать бета версию, распаковать в ~ProgramFiles
* Запустить tlbupd, заинсталить плагины
* Запустить tlbhost
* Поставить [[CoreTemp|http://www.alcpu.com/CoreTemp/]]
2. Actual Window Manager - ннмклаб
3. (?) [[Directory Opus|http://gpsoft.com.au/]] - замена проводника
4. (?) [[eXtra Buttons|http://www.xtrabuttons.com/]] - добавляет дополнительные кнопки в title окна для минимизации в трей, always on top, roll-up, прозрачность
!Win10
1. [[win-10-virtual-desktop-enhancer|https://github.com/sdias/win-10-virtual-desktop-enhancer/releases]] - шоткаты для переключения на вдесктоп, иконка с номером десктопа в трее. Настройка - [[тут|https://github.com/sdias/win-10-virtual-desktop-enhancer/blob/master/docs/settings.md]]
!Разработка
1. ~RegexBuddy - лучший тестер регекспов, искать на торрентах
2. [[git|https://git-scm.com/download]]
3. [[svn|https://sliksvn.com/download/]] - при установке поснимать галочки, оставить только клиент и репо-тулзы
4. [[WinMerge|http://winmerge.org/downloads/]] - визуальный diff
5. [[Perforce Visual Client|https://www.perforce.com/downloads/helix#product-9]], там же - плагин для Explorer
* Перед его установкой - поставить [[notepad++|https://notepad-plus-plus.org/download/]]
6. [[OleViewDotNet|https://github.com/tyranid/oleviewdotnet]] - для нахождения недокументированных COM интерфейсов
7. [[Mongoose web server|https://cesanta.com/binary.html]] - минимальный http сервер, free для personal use
!Кодеки
1. [[K-Lite Codec Pack Mega|http://www.codecguide.com/download_k-lite_codec_pack_mega.htm]]
* при установке в expert mode снять галочки на system tray icons, автообновлении
* после установки анинсталить приложение "Web Companion"
* для слабого компа поставить [[CoreAVC 3.0.1 Professional Edition|http://nnmclub.to/forum/viewtopic.php?t=509864]]. При установке снять галочку с Haali Spliter (он уже есть в к-лайте). После этого в Codec Tweak Tool по кнопке "Preferred decoders" проверить, что ~CoreAVC активен для h.264. По кнопке Configuration->~DirectShow Filtres можно найти настройки ~CoreAVC, выставить там Acceleration
!Файлово-дисковые утилиты
1. [[TeraCopy|http://codesector.com/teracopy]] - копирование файлов с сохранением времени создания (может инсталлироваться как portable)
2. [[Hardwipe|http://www.hardwipe.com/download.html]] - очистка свободного места на диске/очистка всего диска/секурное удаление файлов (есть офф portable версия, в будущем надо будет перейти на [[sdelete|http://technet.microsoft.com/ru-ru/sysinternals/bb897443.aspx]] из Sysinternals с обвесом)
3. [[USB Image Tool|http://www.alexpage.de/usb-image-tool/]] - работа с образами USB устройств
4. [[Swiss File Knife|http://stahlworks.com/downloads.html]] - любые операции с файлами в консоли
5. [[Scanner|http://www.steffengerlach.de/freeware/index.html]] - оценка места на диске, занимаемое каталогами/файлами
6. [[FS-Inspect|http://sourceforge.net/projects/fs-inspect/]] - показывает занимаемое файлами место на диске, ищет дубликаты.
!*nix for Windows
# [[Wget|https://eternallybored.org/misc/wget/]]
!Разное
1. [[OSFMount|http://www.osforensics.com/tools/mount-disk-images.html]] - монтирование под винду разнообразных образов, в том числе и raw-образов
2. [[TestDisk & PhotoRec|http://www.cgsecurity.org/wiki/TestDisk_Download]] - восстановление таблиц раздела, восстановление файлов по сигнатурам
3. [[UpdatePack7R2 для обновления Windows 7 SP1 и Server 2008 R2 SP1|http://forum.oszone.net/thread-257198.html]]
{{{
for /d %a in ("*") do (cd %a&type *>..\%a.csv&cd ..)
}}}
!Upgrade extension php5 -> php7
* [[https://wiki.php.net/phpng-upgrading|https://wiki.php.net/phpng-upgrading]]
* [[https://github.com/beberlei/beberlei.de/blob/master/drafts/porting_extension_to_php7.rst|https://github.com/beberlei/beberlei.de/blob/master/drafts/porting_extension_to_php7.rst]]
* [[https://docstore.mik.ua/orelly/webprog/php/ch14_01.htm|https://docstore.mik.ua/orelly/webprog/php/ch14_01.htm]]
!Слив схемы с plain sql dump:
{{{
pg_dump93.exe -f d:\dump.sql -F p -n bb -v -h 127.0.0.1 -E utf-8 -U kot dbkernel
}}}
* {{{-f d:\dump.sql}}} - куда записать дамп
* {{{-F p}}} - формат выхода - plain
* {{{-n bb}}} - имя схемы для дампа
* {{{-v}}} - verbose mode
* {{{-h 127.0.0.1}}} - хост с postgresql
* {{{-E utf-8}}} - кодировка дампа, по дефолту - кодировка дампа будет в кодировке таблицы
* {{{-U kot}}} - пользователь, под которым делается подключение к бд
* {{{dbkernel}}} - бд
!Заливка схемы
{{{
cat /home/user/dump.sql | psql -d dbkernel -1
}}}
* {{{-d dbkernel }}} - бд
* {{{ -1 }}} - выполнять все в единой транзакции
* Создавать каталог, который будет externals и добавлять его в реп - нельзя
* Собственно редактируем свойства каталога
{{{
svn propedit svn:externals . --editor-cmd="start /wait notepad.exe"
}}}
* Формат записей
{{{
https://github.com/chpock/ckl/trunk/ckltcl/ ckltcl
https://github.com/chpock/ckl/trunk/procarg/ procarg
https://github.com/chpock/app/trunk/build build
}}}
* После добавления externals необходимо сделать update для каталога (prop которого редактировался), иначе commit будет проходить с ошибкой: {{{Commit failed ... File or directory  is out of date}}}
!Autostart
!!Common, only 1 tunnel:
* {{{$ sudo vi /etc/openvpn/watchdog.sh}}}
* Paste:
{{{
#!/bin/sh
vpn=`pgrep -f client.conf`
if [ -z "$vpn" ]; then
    logger VPN restart
    /sbin/service openvpn start
fi
}}}
* If we want several tunnels and custom start system:
{{{
#!/bin/sh
vpn1=`pgrep -f vpn1.conf`
if [ -z "$vpn1" ]; then
    logger VPN1 restart
    /usr/sbin/openvpn --syslog "openvpn(vpn1)" --cd /etc/openvpn --config vpn1.conf &
fi
 
vpn2=`pgrep -f vpn2.conf`
if [ -z "$vpn2" ]; then
    logger VPN2 restart
    /usr/sbin/openvpn --syslog "openvpn(vpn2)" --cd /etc/openvpn --config vpn2.conf &
fi
}}}
* {{{$ sudo chmod +x /etc/openvpn/watchdog.sh}}}
* {{{$ sudo crontab -e}}}, add line (don't forget to add empty line at the end of script):
{{{
*/1 * * * * /etc/openvpn/watchdog.sh >/dev/null 2>&1
}}}
1. Качаем плагин [[тут|http://plugring.farmanager.com/plugin.php?pid=697]]. Распаковываем, устанавливаем.
2. В настройках плагина ставим галочку на автоматический внутренний просмотр
3. Для работы необходим установленный [[Microsoft Visual C++ 2010 Redistributable|Microsoft Visual C++ Redistributable]]
!AIX
{{{
$ find . -perm -0111 -type f -exec ldd {} \; 2>&1 | grep -vE 'libpthreads.a|libpthread.a|libthread.a|libpthreads_compat.a|libc.a|/unix|libpthreads.a|libcrypt.a|XCOFF'
}}}
!Linux x64
{{{
find . -perm -0111 -type f -exec sh -c "file {} | grep ' LSB ' >/dev/null && (echo {} & ldd {} )" \; 2>&1 | grep -vE 'linux-gate.so|libm.so|libc.so|/ld-linux.so|libdl.so|libcrypt.so|libpthread.so|libpthread.so|libnsl.so|libdl.so|libutil.so|linux-vdso.so|/ld-linux-x86-64.so'
}}}
{{{
LD_LIBRARY_PATH="./lib:./lib64:./jre/lib/amd64/server:./apache/lib" find . -perm -0111 -type f -exec sh -c "file {} | grep ' LSB ' >/dev/null && (echo {} & ldd {} )" \; 2>&1 | grep -vE 'linux-gate.so|libm.so|libc.so|/ld-linux.so|libdl.so|libcrypt.so|libpthread.so|libpthread.so|libnsl.so|libdl.so|libutil.so|linux-vdso.so|/ld-linux-x86-64.so' > ~/libs.txt
}}}
!Package control не может обновить bz2 пакет
* Закрываем sublimetext
* В ''Data\Installed Packages'' удаляем ''0_package_control_loader.sublime-package''  и ''0_package_control_loader.sublime-package-new''
* В ''Data\Packages'' удаляем ''bz2''
* Запускаем sublimetext - все норм обновляется
1. Склонировать репу - [[https://github.com/chronoxor/TrueTemplate|https://github.com/chronoxor/TrueTemplate]]
2. Открыть в VC -> юзать ~SDK8.1 когда спросит
3. Сбилдить Release x86
4. Билд сфейлится, но плагин соберется в {{{bin/Release/x86/true-tpl.x86.dll}}}
5. Скопировать его + каталог {{{templates}}} и остальные файлы из корня репы в директорию плагинов фара
!Vagrant: install & setup
* Install [[vagrant|https://www.vagrantup.com/downloads.html]]
* Edit home path in file ''Vagrant\embedded\gems\gems\vagrant-1.9.7\lib\vagrant\shared_helpers.rb''. Set {{{path}}} variable in {{{def self.user_data_path}}}:
{{{
    path = "d:/VM/Vagrant"
}}}
* Add ''Full Permissions'' for ''Users'' to ''D:\VM\Vagrant''
* Install [[VirtualBox|https://www.virtualbox.org/wiki/Downloads]]
* Set VM path in Virtualbox: --''File''->''Common''->...-- ''File''->''Preferences''->''General''->''Default Machine Folder''
* Install [[VirtualBox Extension Pack|https://www.virtualbox.org/wiki/Downloads]]
!Vagrant Manager
Официальный ''Vagrant Manager'' v1.0.0.6 не работает с vagrant v2.0+ & vbox v5.2+ ([[github/issues/47|https://github.com/lanayotech/vagrant-manager-windows/issues/47]]), забрать работающую версию 1.0.0.7 можно отсюда - [[https://github.com/deveres/vagrant-manager-windows/releases|https://github.com/deveres/vagrant-manager-windows/releases]]
Загрузка тут: [[http://virtuawin.sourceforge.net/?page_id=2|http://virtuawin.sourceforge.net/?page_id=2]]

Полезные модули:
[[KvasdoPager|http://code.google.com/p/vwkvasdopager/downloads/list]] - в таскбаре список виртуальных десктопов в виде панели инструментов.
В разделе реестра ''HKCU\Software\Microsoft\Windows\~CurrentVersion\Explorer\Advanced\'' создать параметр ''~DisabledHotkeys'' как "расширяемый строковый параметр". Забить туда "Х", которые будут отключены для хоткеев win-X. Например, при строке ''"12PE"'' - будут запрещены Win-1, Win-2, ~Win-P и ~Win-E.
[[Подробнее..|http://superuser.com/questions/129191/is-there-any-way-to-disable-certain-keyboard-shortcuts-in-windows-7]]
!~PostgreSQL 8.3
В ~PostgreSQL 8.3 при выборке из таблицы по колонке с массивом int'ов и индексом gin на ней был такой план:
{{{
explain analyze select * from public.search_dict_tbl where text_hash = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589]
Index Scan using search_dict_text_hash_idx on search_dict_tbl  (cost=0.00..9.63 rows=1 width=46) (actual time=111.300..111.300 rows=0 loops=1)
  Index Cond: (text_hash = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
  Filter: (text_hash = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
Total runtime: 111.323 ms

explain analyze select * from public.search_dict_tbl where text_hash = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589] limit 1
Limit  (cost=0.00..9.63 rows=1 width=46) (actual time=100.303..100.303 rows=0 loops=1)
  ->  Index Scan using search_dict_text_hash_idx on search_dict_tbl  (cost=0.00..9.63 rows=1 width=46) (actual time=100.302..100.302 rows=0 loops=1)
        Index Cond: (text_hash = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
        Filter: (text_hash = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
Total runtime: 100.325 ms

explain analyze select * from public.search_dict_tbl where text_hash && ARRAY[1926,2058,2974]
Bitmap Heap Scan on search_dict_tbl  (cost=838.56..33865.22 rows=19736 width=46) (actual time=52.069..572.743 rows=488285 loops=1)
  Recheck Cond: (text_hash && '{1926,2058,2974}'::integer[])
  ->  Bitmap Index Scan on search_dict_text_hash_idx  (cost=0.00..833.63 rows=19736 width=0) (actual time=50.176..50.176 rows=488285 loops=1)
        Index Cond: (text_hash && '{1926,2058,2974}'::integer[])
Total runtime: 581.481 ms
}}}
!~PostgreSQL 9.3
В ~PostgreSQL 9.3, на аналогичной выборке (обычный gin индекс), план получился такой:
{{{
explain analyze select id_phrase from lookup.phrase_tbl where phrase = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589]
Bitmap Heap Scan on phrase_tbl  (cost=480.74..48981.36 rows=28483 width=4) (actual time=630.666..630.667 rows=1 loops=1)
  Recheck Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
  Rows Removed by Index Recheck: 1
  ->  Bitmap Index Scan on phrase_tbl_gin_idx  (cost=0.00..473.62 rows=28483 width=0) (actual time=630.639..630.639 rows=2 loops=1)
        Index Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
Total runtime: 630.693 ms

explain analyze select id_phrase from lookup.phrase_tbl where phrase = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589] limit 1
Limit  (cost=0.00..4.52 rows=1 width=4) (actual time=1054.472..1054.473 rows=1 loops=1)
  ->  Seq Scan on phrase_tbl  (cost=0.00..128669.62 rows=28483 width=4) (actual time=1054.469..1054.469 rows=1 loops=1)
        Filter: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
        Rows Removed by Filter: 4086069
Total runtime: 1054.502 ms

explain analyze select id_phrase from lookup.phrase_tbl where phrase && ARRAY[1926,2058,2974]
Seq Scan on phrase_tbl  (cost=0.00..128669.62 rows=5697 width=4) (actual time=0.023..3605.060 rows=860286 loops=1)
  Filter: (phrase && '{1926,2058,2974}'::integer[])
  Rows Removed by Filter: 4836324
Total runtime: 3680.767 ms
}}}
С индексом btree:
{{{
explain analyze select id_phrase from lookup.phrase_tbl where phrase = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589]
Bitmap Heap Scan on phrase_tbl  (cost=1205.30..49705.92 rows=28483 width=4) (actual time=0.048..0.049 rows=1 loops=1)
  Recheck Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
  ->  Bitmap Index Scan on phrase_tbl_idx1  (cost=0.00..1198.18 rows=28483 width=0) (actual time=0.037..0.037 rows=1 loops=1)
        Index Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
Total runtime: 0.079 ms

explain analyze select id_phrase from lookup.phrase_tbl where phrase = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589] limit 1
Limit  (cost=0.56..3.82 rows=1 width=4) (actual time=0.041..0.042 rows=1 loops=1)
  ->  Index Scan using phrase_tbl_idx1 on phrase_tbl  (cost=0.56..92787.01 rows=28483 width=4) (actual time=0.039..0.039 rows=1 loops=1)
        Index Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
Total runtime: 0.066 ms

explain analyze select id_phrase from lookup.phrase_tbl where phrase && ARRAY[1926,2058,2974]
Seq Scan on phrase_tbl  (cost=0.00..128669.62 rows=5697 width=4) (actual time=0.022..3619.179 rows=860286 loops=1)
  Filter: (phrase && '{1926,2058,2974}'::integer[])
  Rows Removed by Filter: 4836324
Total runtime: 3694.295 ms
}}}
С индексом gin({{{gin__int_ops}}}):
{{{
explain analyze select id_phrase from lookup.phrase_tbl where phrase = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589]
Bitmap Heap Scan on phrase_tbl  (cost=484.74..48984.97 rows=28482 width=4) (actual time=632.507..632.508 rows=1 loops=1)
  Recheck Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
  Rows Removed by Index Recheck: 1
  ->  Bitmap Index Scan on phrase_tbl_idx  (cost=0.00..477.62 rows=28482 width=0) (actual time=632.472..632.472 rows=2 loops=1)
        Index Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
Total runtime: 632.548 ms

explain analyze select id_phrase from lookup.phrase_tbl where phrase = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589] limit 1
Limit  (cost=0.00..4.52 rows=1 width=4) (actual time=1065.446..1065.447 rows=1 loops=1)
  ->  Seq Scan on phrase_tbl  (cost=0.00..128669.44 rows=28483 width=4) (actual time=1065.444..1065.444 rows=1 loops=1)
        Filter: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
        Rows Removed by Filter: 4086069
Total runtime: 1065.476 ms

explain analyze select id_phrase from lookup.phrase_tbl where phrase && ARRAY[1926,2058,2974]
Bitmap Heap Scan on phrase_tbl  (cost=116.15..16894.46 rows=5696 width=4) (actual time=271.376..567.704 rows=860284 loops=1)
  Recheck Cond: (phrase && '{1926,2058,2974}'::integer[])
  ->  Bitmap Index Scan on phrase_tbl_idx  (cost=0.00..114.72 rows=5696 width=0) (actual time=256.351..256.351 rows=860284 loops=1)
        Index Cond: (phrase && '{1926,2058,2974}'::integer[])
Total runtime: 639.867 ms
}}}

Пока что, решение - индекс gin({{{gin__int_ops}}}) + btree + "LIMIT 1", при этом будет такой план:
{{{
explain analyze select id_phrase from lookup.phrase_tbl where phrase = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589]
Bitmap Heap Scan on phrase_tbl  (cost=480.74..48981.34 rows=28482 width=4) (actual time=632.849..632.850 rows=1 loops=1)
  Recheck Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
  Rows Removed by Index Recheck: 1
  ->  Bitmap Index Scan on phrase_tbl_phrase_gin_idx  (cost=0.00..473.62 rows=28482 width=0) (actual time=632.816..632.816 rows=2 loops=1)
        Index Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
Total runtime: 632.891 ms

explain analyze select id_phrase from lookup.phrase_tbl where phrase = ARRAY[1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589] limit 1
Limit  (cost=0.56..3.82 rows=1 width=4) (actual time=0.065..0.065 rows=1 loops=1)
  ->  Index Scan using phrase_tbl_phrase_btree_idx on phrase_tbl  (cost=0.56..92786.99 rows=28482 width=4) (actual time=0.062..0.062 rows=1 loops=1)
        Index Cond: (phrase = '{1926,2058,2974,3864,3925,5589,14658,31050,90174,211868,458589}'::integer[])
Total runtime: 0.093 ms

explain analyze select id_phrase from lookup.phrase_tbl where phrase && ARRAY[1926,2058,2974]
Bitmap Heap Scan on phrase_tbl  (cost=112.15..16890.50 rows=5696 width=4) (actual time=272.678..565.761 rows=860286 loops=1)
  Recheck Cond: (phrase && '{1926,2058,2974}'::integer[])
  ->  Bitmap Index Scan on phrase_tbl_phrase_gin_idx  (cost=0.00..110.72 rows=5696 width=0) (actual time=257.757..257.757 rows=860286 loops=1)
        Index Cond: (phrase && '{1926,2058,2974}'::integer[])
Total runtime: 638.190 ms
}}}
!Bootable flash
* [[Rufus|https://rufus.akeo.ie/?locale=ru_RU]] - загрузочная флешка из одного iso
* [[RMPrepUSB|http://www.rmprepusb.com/home]] - multiboot
* [[Easy2Boot|http://www.easy2boot.com/]] - multiboot
!Что на ней должно быть
# [[DriverPack Solution Online|http://drp.su/ru/]] - онлайн проверка драйверов
Для удаления жестких переводов строк (замена их пробелом) - делаем макрос и запускаем:
{{{
Sub Макрос1()
  Cells.Replace What:= Chr(10), Replacement:=" ", LookAt:=xlPart, SearchOrder :=xlByRows, MatchCase:=False
End Sub
}}}
Для удаления жесткого перевода строки и всех символов после него - делаем макрос и запускаем:
{{{
Sub Макрос1()
  Cells.Replace What:="" & Chr(10) & "*", Replacement:="", LookAt:=xlPart, SearchOrder :=xlByRows, MatchCase:=False
End Sub
}}}

!List available capabilities
{{{
dism /online /get-capabilities
}}}
* Сколько места всего занимает база:
{{{
SELECT pg_database_size(current_database()) AS size_Bytes,
  pg_database_size(current_database())/1024.0/1024/1024 AS size_GBytes,
  pg_size_pretty(pg_database_size(current_database())) AS size_pretty;
}}}
* Сколько места занимают отдельные таблицы, примерное количество строк в таблицах и примерный размер 1 миллиона строк этой таблицы:
{{{
SELECT nspname || '.' || relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS total_size,
    reltuples as countrows,
    pg_size_pretty(100000*(pg_total_relation_size(C.oid))/(1+reltuples)::int) as one_mil_rows_size
  FROM pg_class C
  LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
  WHERE nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
  ORDER BY pg_total_relation_size(C.oid) DESC
}}}
!Своя portable сборка с нуля
* Забираем 7z архив стабильной сборки Far с  [[http://www.farmanager.com/download.php|http://www.farmanager.com/download.php]], распаковать в ''%FARHOME%''.
* Забираем 7z архив portable ~ConEmu с [[http://www.fosshub.com/ConEmu.html|http://www.fosshub.com/ConEmu.html]], распаковать в ''%FARHOME%''.
* Переименовываем ''%FARHOME%\Far.exe.example.ini'' в ''%FARHOME%\Far.exe.ini'' и редактируем там строки:
{{{
UseSystemProfiles=0
UserProfileDir=%FARHOME%\Profile
UserLocalProfileDir=%FARHOME%\Profile\Local
}}}
* В ''%FARHOME%\~ConEmu\'' кидаем файлик [[https://raw.githubusercontent.com/chpock/.ini/master/ConEmu/ConEmu.xml|https://raw.githubusercontent.com/chpock/.ini/master/ConEmu/ConEmu.xml]] (или создаем пустой файлик ''~ConEmu.xml'' для дефлотных настроек ~ConEmu)

!Плагины
1. [[Renewal|http://code.google.com/p/farplugs/downloads/list]] - автообновление ядра far и плагинов
2. [[NetBox|http://forum.farmanager.com/viewtopic.php?f=11&t=6316]] - замена стандартного плагина ftp (стандартный пишет настройки в реестр). Поддержка SFTP/SCP/FTP/FTPS/~WebDAV. Стандартный ftp - удаляем после настройки этого плагина.
3. [[PlugMenu|Настройка плагина для Far - PlugMenu]] - наводит порядок в меню вызова плагинов.
4. [[MacroLib|Настройка плагина для Far - MacroLib]] - макросы в виде текстовых файлов
5. [[Plugin Calculator|Настройка плагина для Far - Plugin Calculator]] - калькулятор
6. [[Multimedia Viewer|Настройка плагина для Far - Multimedia Viewer]] - простой просмотр всех мультимедия форматов через системные кодеки (из испробованных: [[Image Viewer|http://code.google.com/p/farplugs/downloads/list]] - глючит в ~ConEmu; [[PicView Advanced|Настройка плагина для Far - PicView Advanced]] - редко обновляется, только изображения; [[Audio Player|http://code.google.com/p/farplugs/downloads/list]] - играет только звуковые форматы через библиотеку BASS, не универсально)
6. [[PicView Advanced|Настройка плагина для Far - PicView Advanced]] - просмотр изображений в far ()
7. [[PEAnalyzer|http://code.google.com/p/farplugs/downloads/list]] - просмотр различной информации из PE файлов и простое дизассемблирование
8. [[SQLiteDB|http://code.google.com/p/farplugs/downloads/list]] - минимальный просмотр и редактор ~SQLite базы
9. [[Hexitor|http://code.google.com/p/farplugs/downloads/list]] - hex редактор
10. [[Media Info|http://code.google.com/p/farplugs/downloads/list]] - информация о мультимедия файлах
11. [[FileUnlock|http://code.google.com/p/farplugs/downloads/list]] - показывает какие процессы блокируют файл
12. [[PortaDev|http://code.google.com/p/farplugs/downloads/list]] - позволяет работать с подключенными портативными устройствами как с обычным диском
13. [[TrueTemplate|Настройка плагина для Far - TrueTemplate]]
# [[Picol|https://tcl.wiki/17893]]
# [[Jim Tcl|https://tcl.wiki/13693]]
# [[LIL|https://tcl.wiki/27430]]
Background: #f4f3f2
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.cxtoggle {color:[[ColorPalette::TertiaryMid]];}
.cxtoggle:hover {color:[[ColorPalette::Foreground]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
background:[[ColorPalette::TertiaryPale]];
border-left:1px solid [[ColorPalette::TertiaryLight]];
border-top:1px solid [[ColorPalette::TertiaryLight]];
border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0; padding: 0.2em 0.4em;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.commentToolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.commentToolbar a {color:[[ColorPalette::TertiaryDark]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .commentToolbar a {color:[[ColorPalette::TertiaryDark]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}
.selected .commentToolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.tagmenu {padding:0.2em 0.4em 0.2em 0.4em; font-weight:bold; color:[[ColorPalette::TertiaryMid]]}
.selected .tagmenu {color:black;}
.selected .tagmenu:hover {background-color:white;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.tabContents .button {border:1px solid [[ColorPalette::TertiaryPale]];}
.tabContents .button:hover {border-color:[[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:solid 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}
.viewer table { border: 0px }
.viewer td {border: 1px solid #fff;} .oddRow {color: #333; background: #ddd;} .evenRow { color: #222; background: #eee;} 
.oddRowComment {color: #332; background: #ddc;} .evenRowComment { color: #222; background: #eec;}
.oddRowMessage {color: #223; background: #dcf;} .evenRowMessage { color: #223; background: #def;}
.oddRowNote {color: #332; background: #dec;} .evenRowNote { color: #222; background: #efc;}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:0px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:0px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

.commentArea {background:[[ColorPalette::Background]];}
.commentTD {background:[[ColorPalette::Background]];}
.btnReplies {border:0; margin-right: 0.5em}
.btnCommentTool {border:0; margin-right: 0.3em}

.redbutton { color: #cc0000 }
.redbutton:hover { color: #ff0000 }

/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

fieldset { padding:0px 8px 4px 4px; }

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
#mainMenu .tiddlyLinkNonExisting,
#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}
#sidebarTabs .button {margin:0em 0.2em;	padding:0.2em 0.3em; display:block;}

#headerArea { margin: 0.5em; }
.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#topRightCorner { position:absolute; top:0.5em;right:0.9em; font-size: 1.1em; text-align: right; }

#leftSidebar {position:absolute; left:0; width:10em; padding:0.5em 0.5em 0.5em 0.5em;}
#mainMenu {text-align:right; line-height:1.6em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; margin-top:1em; font-size:.9em;}
#sidebarOptions {padding-top:0em;}
#sidebarOptions a {margin:0em 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .searchButton {font-size: 1.11em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 .3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0em 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0em 0em 0em 0em; margin:0.4em 0em 0.2em 0em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0em 0em 0em; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0em;}
.wizardFooter .status {padding:0em 0.4em 0em 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em 0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0em; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em 0.2em 0.2em 0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em 0.2em 0.2em 0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em 1em 1em 1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0em;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}

.listBreak div {margin:2px 0;}
.tabset {padding:1em 0em 0em 0.5em;}
.tab {margin:0em 0em 0em 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}
.tabContents .tiddler {padding:0.1em 0.5em 0.5em 0.5em}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0em 12em;}
#wideArea {margin:1em 1em 0em 12em;}

.toolbar {text-align:right; font-size:.9em; float:right }
.commentToolbar {text-align:left; font-size:.9em;}

.tiddler {padding:0em 1em 1em 0em;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}
.cxtoggle {width:1.0em; font-size:1.10em;}
.vttable td { padding: 0 0 0 0 }
.tdtoggle {width: 1.25em;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}
.tiddler .disabled {padding:0.2em 0.6em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0em 0.25em; padding:0em 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0em 0em; 0em; 0em; font-size:1.0em;}
.viewer tr {vertical-align: top; }

.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0em; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px 1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

.commentTable {width:100%; font-size:1.0em;}
.commentTable td {vertical-align:text-top;}
.commentArea {border:0px; width:100%; font:inherit;}
.commentToolbar { padding-bottom:5px;}
.replyTD { padding-left:1.25em }
.buttonftr {position:relative; top:0em; right:0em; }
.linkbutton { font-weight: bold }
.siteMapTags { color: #ff0000 }
a.fieldsLink { margin-left:10px; margin-bottom:8px;}

.diffout { font-size:1.0em; font-family: courier; }
.diffminus { background-color: #d0ffdd; color: blue; }
.diffplus { background-color: #ffd0dd; color: darkred; }
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
		/*{{{*/
		@media print {
		#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none ! important;}
		#displayArea {margin: 1em 1em 0em 1em;}
		/* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
		noscript {display:none;}
		}
		/*}}}*/
	
<!--{{{-->
<div id='headerArea'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
<span id='topRightCorner' refresh='content' tiddler='TopRightCorner'></span>
</div>
<div id='leftSidebar'>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='leftBottom'></div>
</div>
<div id='wideArea'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<table width='100%' class='vttable'><tr valign='top'>
<td class='tdtoggle'>
<a class='cxtoggle button' title='collapse' href='javascript:;'>▼</a>
<a class='cxtoggle button' title='expand' href='javascript:;' style='display:none'>►</a></td>
<td><div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
</td></tr>
<tr><td></td><td>
<div class='subtitle'><span macro='author'></span><span macro='view modified date "DD MMM YYYY" ", "'></span> <span macro='history'></span></div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='if config.options.chkListPrevious view versions wikified'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<hr/>
<div class='comments' macro='comments'></div>
</td></tr>
</table>
<!--}}}-->
<!--{{{-->
<table width='100%' class='vttable'><tr valign='top'>
<td class='tdtoggle'>
<a class='cxtoggle button' title='collapse' href='javascript:;'>▼</a>
<a class='cxtoggle button' title='expand' href='javascript:;' style='display:none'>►</a></td>
<td><div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
</td></tr>
<tr><td></td><td>
<fieldset><legend>Title</legend><div class='editor' macro='edit title'></div></fieldset>
<div macro='annotations'></div>
<fieldset><legend>Text</legend><div class='editor' macro='edit text'></div>
<table style='width:100%;'><tr><td><div class='commentToolbar' macro='toolbar [[ToolbarCommands::TextToolbar]]'></td><td align='right'><div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div></td></tr></table> </fieldset>
<fieldset id='preview' style='display:none'><legend>Preview</legend><div class='viewer' ></div></fieldset>
<fieldset id='tag' class='tagFrame'><legend>Tags & attributes</legend><div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div></fieldset>
</td></tr>
</table>
<!--}}}-->
<!--{{{-->
<div class='editor' macro='edit text'></div>
<span class='tagFrame' > <div class='editor' macro='edit tags'></div></span>
<span class='commentToolbar' macro='toolbar [[ToolbarCommands::SpecialEditToolbar]]'></span>
<div class='history' ></div>
<div class='viewer special' macro='view text wikified'></div>
<!--}}}-->
<div class='viewer' macro='view text wikified'></div>
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::MiniToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<table width='100%' class='vttable'><tr valign='top'>
<td class='tdtoggle'>
<a class='cxtoggle button' title='collapse' href='javascript:;'>▼</a>
<a class='cxtoggle button' title='expand' href='javascript:;' style='display:none'>►</a></td>
<td><div class='toolbar' macro='toolbar [[ToolbarCommands::MiniToolbar]]'></div>
<div class='title' macro='view title'></div>
</td></tr>
<tr><td></td><td>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
</td></tr>
</table>
<!--}}}-->
macro|login|
macro|logout|
tiddler|UserProfile|my profile|Edit my profile|
link|http://localhost:8000/datastore?kind=Page|DataStore|config.admin
<<tabs chkPageSetup 
'PageProperties' 'Title, access, template/includes' 'js;editTiddlerHere;PageProperties;SpecialViewTemplate'
'MainMenu' 'The left column' 'js;editTiddlerHere;MainMenu'
'DefaultTiddlers' 'Middle column initial content' 'js;editTiddlerHere;DefaultTiddlers'
'ColorPalette' 'Color palette' 'js;editTiddlerHere;ColorPalette'
'StyleSheet' 'Custom styles' 'js;editTiddlerHere;StyleSheet'
'All..' 'Other special tiddlers' 'js;editTiddlerHere;SpecialTiddlers;SpecialViewTemplate'
>>
!Common tweaks
* <script label="Remove">CommonTasks.RemoveText('[[PageSetup]]\n','MainMenu')&&CommonTasks.RemoveThisLi(place)</script> PageSetup from MainMenu (it is available from the editing menu).
* <script label="Remove">CommonTasks.RemoveText('[[PageSetup]]','DefaultTiddlers')&&CommonTasks.RemoveThisLi(place)</script> PageSetup from DefaultTiddlers.
macro|newTiddler|
macro|newJournal|"DD MMM YYYY" "journal"
macro|tiwinate|
tiddler|CreateNewPage|new page|Create new page or folder|p
tiddler|UploadDialog|upload file|Upload a local file|u
tiddler|PageSetup|page setup|Edit page properties and presentation|p
tiddler|File list|file list|list of uploaded files|f
tiddler|Recycle bin|recycle bin|List of 'deleted' tiddlers|r
macro|pasteTiddler|
<<fileList>>
<<recycleBin *>>
<<option chkAutoSyncAddress>> <<permaview>> - <script label="help" title="Information on address bar sync">story.displayTiddler(null, "Help on address bar sync features");</script>
<<option chkRegExpSearch>> Regular expression search
<<option chkCaseSensitiveSearch>> Case-sensitive search
<<option chkAnimate>> Enable animations
''Edit mode:''
<<option chkAutoSave>> Auto-save changes while editing
<<option chkInsertTabs>> Tab key inserts tab character
''//The server saves these and your// AdvancedOptions //in your profile//''
----
<<downloadAsTiddlyWiki>>
Please <<login>> to read this page.
<<siteMap>>
<<recentChanges>>
<<recentComments>>
<<uploadDialog>>
<script>accessTypes = "all|edit|add|comment|view|none|"
var fn = formName(place);
forms[fn] = http.createPage({defaults:"get"});
if (fn != "CreateNewPage") {
	forms[fn].title = fn;
	forms[fn].address = CheckNewAddress(fn);
	}
forms[fn].template = "normal";
forms[fn].title_changed = function(f,id,v) { f.title = v; setFormFieldValue(f,"address",CheckNewAddress(v)); }
;</script>
|>|>|Title<br><<input title text 70>>|
|>|>|Subtitle<br><<input subtitle text 70>>|
|>|>|Address (<script label="end with a /">MakePathAFolder('address');</script> to make a folder)<br><<input address text 70>>|
|>|>|Access permissions|
|Group<br><<input group select javascript:accessTypes>>|Authenticated<br><<input authenticated select javascript:accessTypes>>|Anonymous<br><<input anonymous select "javascript:accessTypes">>|
|>|>|Template<br><<input template select javascript:availableTemplates() >>|
|>|>|<script label="Create new page" title="Create new page">OnCreatePage(http.createPage(GetForm(place)));</script><script>forms[formName(place)].controls['title'].focus();</script>|
<script>
var fn = formName(place);
var fn = formName(place);
forms[fn] = http.createPage({defaults:"get"}); // for updateAccess
forms[fn].address = window.location.pathname;
</script><html><div class='title'>Move this page</div></html>
|>|>|Address <br><<input address text 70>>|
|<<input redirect checkbox false>>Redirect current address|
|>|>|<script label="Move page" title="Move page to a different address">OnCreatePage(http.moveThisPage(GetForm(place)));</script><script>forms[formName(place)].controls['address'].focus();</script>|
	<script>
var fn = formName(place);
listOfAllGroups = http.getGroups();
if (!listOfAllGroups.length)
	listOfAllGroups[0] = "(none defined)";
else
	listOfAllGroups.unshift("Select...");
listOfAllGroups = listOfAllGroups.join('|');
forms[fn] = { 'updateaccess': true };
	</script>
|Group<br><<input groupname select javascript:listOfAllGroups "" ListGroupMembers()>>|New group<br><<input name text 36>> <script label="Create" title="Create group">OnCreateGroup(http.createGroup(forms.DefineGroup));</script>|
|Members:|<html><div id="groupMemberList"></html>|
||>|Add user as member<br><<input user text 36>> <script label="Add" title="Add user">OnAddMember(http.addGroupMember(forms.DefineGroup));</script>|