- 1
- 2
- 3
//- ASAP OR DIE♪
// re: ASAP OR DIE♪
//- next time, you should die
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
//- ASAP OR DIE♪
// re: ASAP OR DIE♪
//- next time, you should die
−1
//Сериализовать структуру со статической информацией о её полях
template<typename T, typename T0, typename ...Args> void SerializeBinary(
const Tuple<T0 T::*, Args T::*...>& members, const T& src, void*& dst)
{
SerializeBinary(src.*members.first, dst);
SerializeBinary(members.next, src, dst);
}
template<typename T, typename T0> void SerializeBinary(
const Tuple<T0 T::*>& members, const T& src, void*& dst)
{
SerializeBinary(src.*members.first, dst);
}
//Десериализовать структуру со статической информацией о её полях
template<typename T, typename T0, typename ...Args> void DeserializeBinary(
const Tuple<T0 T::*, Args T::*...>& members, T& dst, const void*& src)
{
DeserializeBinary(dst.*members.first, src);
DeserializeBinary(members.next, dst, src);
}
template<typename T, typename T0> void DeserializeBinary(
const Tuple<T0 T::*>& members, T& dst, const void*& src)
{
DeserializeBinary(dst.*members.first, src);
}
//Размер структуры в сериализованном виде
template<typename T, typename T0, typename ...Args> uintptr GetSerializedBinarySize(
const Tuple<T0 T::*, Args T::*...>& members, const T& src)
{
return GetSerializedBinarySize(src.*members.first) + GetSerializedBinarySize(members.next, src);
}
template<typename T, typename T0> uintptr GetSerializedBinarySize(
const Tuple<T0 T::*>& members, const T& src)
{
return GetSerializedBinarySize(src.*members.first);
}
Сделал свой сериализатор на шаблонах и кортежах с указателями на данные-члены.
+5
op =: (*&_1@|.@],[)/
do =: >:@>@{. ; op@>@{:
check =: *./@(>:&0)*.*./@(2&(</\))
((,do@{:)`]@.(check@>@{:@{:))^:_ (,: do)0&;(i. 36)
┌──┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│0 │0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│1 │_1 _3 _5 _7 _9 _11 _13 _15 _17 _19 _21 _23 _25 _27 _29 _31 _33 _35 34 32 30 28 26 24 22 20 18 16 14 12 10 8 6 4 2 0 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│2 │3 7 11 15 19 23 27 31 35 _32 _28 _24 _20 _16 _12 _8 _4 0 2 6 10 14 18 22 26 30 34 _33 _29 _25 _21 _17 _13 _9 _5 _1 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│3 │_7 _15 _23 _31 32 24 16 8 0 _6 _14 _22 _30 33 25 17 9 1 _5 _13 _21 _29 34 26 18 10 2 _4 _12 _20 _28 35 27 19 11 3 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│4 │15 31 _24 _8 6 22 _33 _17 _1 13 29 _26 _10 4 20 _35 _19 _3 11 27 _28 _12 2 18 34 _21 _5 9 25 _30 _14 0 16 32 _23 _7 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│5 │_31 8 _22 17 _13 26 _4 35 3 _27 12 _18 21 _9 30 0 _32 7 _23 16 _14 25 _5 34 2 _28 11 _19 20 _10 29 _1 _33 6 _24 15 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│6 │_8 _17 _26 _35 27 18 9 0 _7 _16 _25 _34 28 19 10 1 _6 _15 _24 _33 29 20 11 2 _5 _14 _23 _32 30 21 12 3 _4 _13 _22 _31 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│7 │17 35 _18 0 16 34 _19 _1 15 33 _20 _2 14 32 _21 _3 13 31 _22 _4 12 30 _23 _5 11 29 _24 _6 10 28 _25 _7 9 27 _26 _8 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│8 │_35 0 _34 1 _33 2 _32 3 _31 4 _30 5 _29 6 _28 7 _27 8 _26 9 _25 10 _24 11 _23 12 _22 13 _21 14 _20 15 _19 16 _18 17 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│9 │0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _10 _11 _12 _13 _14 _15 _16 _17 _18 _19 _20 _21 _22 _23 _24 _25 _26 _27 _28 _29 _30 _31 _32 _33 _34 _35│
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│10│1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 _34 _32 _30 _28 _26 _24 _22 _20 _18 _16 _14 _12 _10 _8 _6 _4 _2 0 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│11│_3 _7 _11 _15 _19 _23 _27 _31 _35 32 28 24 20 16 12 8 4 0 _2 _6 _10 _14 _18 _22 _26 _30 _34 33 29 25 21 17 13 9 5 1 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│12│7 15 23 31 _32 _24 _16 _8 0 6 14 22 30 _33 _25 _17 _9 _1 5 13 21 29 _34 _26 _18 _10 _2 4 12 20 28 _35 _27 _19 _11 _3 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│13│_15 _31 24 8 _6 _22 33 17 1 _13 _29 26 10 _4 _20 35 19 3 _11 _27 28 12 _2 _18 _34 21 5 _9 _25 30 14 0 _16 _32 23 7 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│14│31 _8 22 _17 13 _26 4 _35 _3 27 _12 18 _21 9 _30 0 32 _7 23 _16 14 _25 5 _34 _2 28 _11 19 _20 10 _29 1 33 _6 24 _15 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│15│8 17 26 35 _27 _18 _9 0 7 16 25 34 _28 _19 _10 _1 6 15 24 33 _29 _20 _11 _2 5 14 23 32 _30 _21 _12 _3 4 13 22 31 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│16│_17 _35 18 0 _16 _34 19 1 _15 _33 20 2 _14 _32 21 3 _13 _31 22 4 _12 _30 23 5 _11 _29 24 6 _10 _28 25 7 _9 _27 26 8 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│17│35 0 34 _1 33 _2 32 _3 31 _4 30 _5 29 _6 28 _7 27 _8 26 _9 25 _10 24 _11 23 _12 22 _13 21 _14 20 _15 19 _16 18 _17 │
├──┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│18│0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 │
└──┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
В общем суть такова...
Включил я музыку, взял в руку колоду карт и начал думать о жизни. Взял я верхнюю карту и перевернул ее, положил обратно, потом взял две карты, перевернул и опять положил обратно. И так добавляя по одной карте каждый раз. В итоге, когда я дошел до конца, колода оказалась разделена на 2 половину с перевернутыми и не перевернутыми картами.
И тут я подумал - а сколько раз нужно проделать такие манипуляции что бы колода вернулась в исходное состояние? - открыл j, и...
0
<snippet>
<content><![CDATA[
/**
* стандартный класс модуля
*/
Class adeveloper_main extends CModule
{
const MODULE_ID = 'adeveloper.main';
var \$MODULE_ID = 'adeveloper.main';
var \$MODULE_VERSION;
var \$MODULE_VERSION_DATE;
var \$MODULE_NAME;
var \$MODULE_DESCRIPTION;
var \$MODULE_CSS;
var \$strError = '';
function __construct()
{
\$arModuleVersion = array();
include(dirname(__FILE__)."/version.php");
\$this->MODULE_VERSION = \$arModuleVersion["VERSION"];
\$this->MODULE_VERSION_DATE = \$arModuleVersion["VERSION_DATE"];
\$this->MODULE_NAME = "Module Name";
\$this->MODULE_DESCRIPTION = "Module desc";
\$this->PARTNER_NAME = "Adeveloper";
\$this->PARTNER_URI = "http://adeveloper.ru";
}
function InstallDB(\$arParams = array())
{
//RegisterModuleDependences('main', 'OnBuildGlobalMenu', self::MODULE_ID, 'CAdeveloperBp', 'OnBuildGlobalMenu');
return true;
}
function UnInstallDB(\$arParams = array())
{
//UnRegisterModuleDependences('main', 'OnBuildGlobalMenu', self::MODULE_ID, 'CAdeveloperBp', 'OnBuildGlobalMenu');
return true;
}
function InstallEvents()
{
return true;
}
function UnInstallEvents()
{
return true;
}
function InstallFiles(\$arParams = array())
{
return true;
}
function UnInstallFiles()
{
return true;
}
function DoInstall()
{
// global \$APPLICATION;
RegisterModule(self::MODULE_ID);
}
/**
* @todo добавить блок удаления инфоблока, пока не делаю, чтобы лишнего не удалить
*/
function DoUninstall()
{
// global \$APPLICATION;
UnRegisterModule(self::MODULE_ID);
}
};
]]></content>
<!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
<tabTrigger>bx-module-class</tabTrigger>
<!-- Optional: Set a scope to limit where the snippet will trigger -->
<scope>source.php</scope>
</snippet>
Шел 2016 год, а var и globals все никак не могу покинуть адептов битрикса.
https://github.com/adevelopers/bitrix/blob/master/BitrixSnippets/modules/bx-module-class.sublime-snippet
0
// Функция определения мобильных браузеров
public static function is_mobile(){
$user_agent=strtolower(getenv('HTTP_USER_AGENT'));
$accept=strtolower(getenv('HTTP_ACCEPT'));
if ((strpos($accept,'text/vnd.wap.wml')!==false) || (strpos($accept,'application/vnd.wap.xhtml+xml')!==false)){
return 1; // Мобильный браузер обнаружен по HTTP-заголовкам
}
if (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE'])){
return 2; // Мобильный браузер обнаружен по установкам сервера
}
if (preg_match('/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|'.
'wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|'.
'lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|'.
'mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|'.
'm881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|'.
'r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|'.
'i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|'.
'htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|'.
'sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|'.
'p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|'.
'_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|'.
's800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|'.
'd736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |'.
'sonyericsson|samsung|240x|x320vx10|nokia|sony cmd|motorola|'.
'up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|'.
'pocket|kindle|mobile|psp|treo)/', $user_agent)){
return 3; // Мобильный браузер обнаружен по сигнатуре User Agent
}
if (in_array(substr($user_agent,0,4),
Array("1207", "3gso", "4thp", "501i", "502i", "503i", "504i", "505i", "506i",
"6310", "6590", "770s", "802s", "a wa", "abac", "acer", "acoo", "acs-",
"aiko", "airn", "alav", "alca", "alco", "amoi", "anex", "anny", "anyw",
"aptu", "arch", "argo", "aste", "asus", "attw", "au-m", "audi", "aur ",
"aus ", "avan", "beck", "bell", "benq", "bilb", "bird", "blac", "blaz",
"brew", "brvw", "bumb", "bw-n", "bw-u", "c55/", "capi", "ccwa", "cdm-",
"cell", "chtm", "cldc", "cmd-", "cond", "craw", "dait", "dall", "dang",
"dbte", "dc-s", "devi", "dica", "dmob", "doco", "dopo", "ds-d", "ds12",
"el49", "elai", "eml2", "emul", "eric", "erk0", "esl8", "ez40", "ez60",
"ez70", "ezos", "ezwa", "ezze", "fake", "fetc", "fly-", "fly_", "g-mo",
"g1 u", "g560", "gene", "gf-5", "go.w", "good", "grad", "grun", "haie",
"hcit", "hd-m", "hd-p", "hd-t", "hei-", "hiba", "hipt", "hita", "hp i",
"hpip", "hs-c", "htc ", "htc-", "htc_", "htca", "htcg", "htcp", "htcs",
"htct", "http", "huaw", "hutc", "i-20", "i-go", "i-ma", "i230", "iac",
"iac-", "iac/", "ibro", "idea", "ig01", "ikom", "im1k", "inno", "ipaq",
"iris", "jata", "java", "jbro", "jemu", "jigs", "kddi", "keji", "kgt",
"kgt/", "klon", "kpt ", "kwc-", "kyoc", "kyok", "leno", "lexi", "lg g",
"lg-a", "lg-b", "lg-c", "lg-d", "lg-f", "lg-g", "lg-k", "lg-l", "lg-m",
"lg-o", "lg-p", "lg-s", "lg-t", "lg-u", "lg-w", "lg/k", "lg/l", "lg/u",
"lg50", "lg54", "lge-", "lge/", "libw", "lynx", "m-cr", "m1-w", "m3ga",
"m50/", "mate", "maui", "maxo", "mc01", "mc21", "mcca", "medi", "merc",
"meri", "midp", "mio8", "mioa", "mits", "mmef", "mo01", "mo02", "mobi",
"mode", "modo", "mot ", "mot-", "moto", "motv", "mozz", "mt50", "mtp1",
"mtv ", "mwbp", "mywa", "n100", "n101", "n102", "n202", "n203", "n300",
"n302", "n500", "n502", "n505", "n700", "n701", "n710", "nec-", "nem-",
"neon", "netf", "newg", "newt", "nok6", "noki", "nzph", "o2 x", "o2-x",
"o2im", "opti", "opwv", "oran", "owg1", "p800", "palm", "pana", "pand",
"pant", "pdxg", "pg-1", "pg-2", "pg-3", "pg-6", "pg-8", "pg-c", "pg13",
"phil", "pire", "play", "pluc", "pn-2", "pock", "port", "pose", "prox",
"psio", "pt-g", "qa-a", "qc-2", "qc-3", "qc-5", "qc-7", "qc07", "qc12",
"qc21", "qc32", "qc60", "qci-", "qtek", "qwap", "r380", "r600", "raks",
"rim9", "rove", "rozo", "s55/", "sage", "sama", "samm", "sams", "sany",
"sava", "sc01", "sch-", "scoo", "scp-", "sdk/", "se47", "sec-", "sec0",
"sec1", "semc", "send", "seri", "sgh-", "shar", "sie-", "siem", "sk-0",
"sl45", "slid", "smal", "smar", "smb3", "smit", "smt5", "soft", "sony",
"sp01", "sph-", "spv ", "spv-", "sy01", "symb", "t-mo", "t218", "t250",
"t600", "t610", "t618", "tagt", "talk", "tcl-", "tdg-", "teli", "telm",
"tim-", "topl", "tosh", "treo", "ts70", "tsm-", "tsm3", "tsm5", "tx-9",
"up.b", "upg1", "upsi", "utst", "v400", "v750", "veri", "virg", "vite",
"vk-v", "vk40", "vk50", "vk52", "vk53", "vm40", "voda", "vulc", "vx52",
"vx53", "vx60", "vx61", "vx70", "vx80", "vx81", "vx83", "vx85", "vx98",
"w3c ", "w3c-", "wap-", "wapa", "wapi", "wapj", "wapm", "wapp", "wapr",
"waps", "wapt", "wapu", "wapv", "wapy", "webc", "whit", "wig ", "winc",
"winw", "wmlb", "wonu", "x700", "xda-", "xda2", "xdag", "yas-", "your",
"zeto", "zte-"))) {
return 4; // Мобильный браузер обнаружен по сигнатуре User Agent
}
return false; // Мобильный браузер не обнаружен
}
Все те же адепты битрикса. Наслаждайтесь https://github.com/raVidok/bitrix/blob/master/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0% B8%2C%20%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D 1%8B/%D0%9E%D0%B1%D1%89%D0%B8%D0%B9%20%D0%BA% D0%BB%D0%B0%D1%81%D1%81%20%D1%81%20%D0%B F%D0%BE%D0%BB%D0%B5%D0%B7%D0%BD%D0%BE%D1 %81%D1%82%D1%8F%D0%BC%D0%B8/func.php
P.S. С нетерпением ждем кодов 5, 6 и 7 :)
0
https://github.com/Londeren/Bitrix/blob/master/1C/bx_1c_import.php
Копался в недраг гитхаба и наткнулся на простыня для импорта 1с для битрикса
+7
using System;
public class Test
{
private static void Main(string[] args)
{
int d = 2147483647;
Console.WriteLine(d);
long g = 2147483647+d;
Console.WriteLine(g);
long k = new MyClass() + new MyClass();
Console.WriteLine(k);
}
public class MyClass
{
public static implicit operator int(MyClass m)
{
return 5;
}
public static implicit operator long(MyClass m)
{
return 100;
}
}
}
Типушня
+3
for(;++i <= n && std::cin >> a;)
if(a >= 1.0 && ++bigger && std::cout << i << ' ');
else
if(mx < a)
mx = a,
maxi = i;
Решил сдать задачи на cf, в итоге выдавил из себя вот такой вот цикл.
Очень лень было ставить скобочки.
+2
public static long NormalizeIp(this long ip)
{
var ipAddress = new IPAddress(Math.Abs(ip)).ToString();
return ipAddress.IpToLong();
}
static long IpToLong(this string ip)
{
double num = 0;
if (!string.IsNullOrEmpty(ip))
{
var ipBytes = ip.Split('.');
for (var i = ipBytes.Length - 1; i >= 0; i--)
{
num += ((int.Parse(ipBytes[i]) % 256) * Math.Pow(256, (3 - i)));
}
}
return (long)num;
}
Получаем IP вот таким вот методом - BitConverter.ToInt32(IPAddress.Parse(ip) .GetAddressBytes(), 0)
Приводим к типу long (неявным методом, т.е. long a = ip_address) и в таком виде сохраняем в базу как bigint (int64)
Затем берем его из базы и пытаемся провернуть с ним вот такой NormalizeIp
Печаль (
−2
Немного о пропертях
"Лично мне свойства не нравятся и я был бы рад, если бы в Microsoft решили убрать
их поддержку из .NET Framework и сопутствующих языков программирования."
"Я считаю, что разработчики используют свойства намного чаще, чем следовало
бы. Достаточно внимательно изучить список различий между свойствами и поля-
ми, чтобы понять: есть очень немного ситуаций, в которых определение свойства
действительно полезно, удобно и не запутывает разработчика. Единственная при-
влекательная черта свойств — упрощенный синтаксис, все остальное — недостатки,
в числе которых потеря в производительности и читабельности кода. Если бы я
участвовал в разработке .NET Framework и компиляторов, я бы вообще отказался от
свойств, вместо этого я предоставил бы разработчикам полную свободу реализации
методов GetXxx и SetXxx. Позже создатели компиляторов могли бы предоставить
особый упрощенный синтаксис вызова этих методов, но только при условии его
отличия от синтаксиса обращения к полям, чтобы программист четко понимал, что
выполняется вызов метода!"
Джефри Рихтер
Срач объявляется открытым