- 1
https://habr.com/company/medgadgets/blog/418871/
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
https://habr.com/company/medgadgets/blog/418871/
−1
function is_mobile() {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
return preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|'.
'iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|'.
'phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|'.
'windows (ce|phone)|xda|xiino/i', $user_agent) ||
preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|'.
'al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|'.
'bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|'.
'craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|'.
'ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|'.
'hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|'.
'i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|'.
'kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|'.
'm50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|'.
'mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|'.
'nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|'.
'pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|'.
'ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|'.
'sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|'.
't6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|'.
'up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|'.
'vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|'.
'x700|yas\-|your|zeto|zte\-/i', substr($user_agent, 0, 4));
}
+1
http://faqs.org.ru/progr/c_cpp/cfaqrus.htm
1.14: Ну а если честно, на какой-нибудь реальной машине используются
ненулевые внутренние представления нулевых указателей или разные
представления для указателей разных типов?
О: Серия Prime 50 использует сегмент 07777, смещение 0 для нулевого
указателя, по крайней мере, для PL/I. Более поздние модели используют
сегмент 0, смещение 0 для нулевых указателей С, что делает
необходимыми новые инструкции, такие как TCNP (проверить нулевой
указатель С), которые вводятся для совместимости с уцелевшими
скверно написанными С программами, основанными на неверных
предположениях. Старые машины Prime с адресацией слов были печально
знамениты тем, что указатели на байты (char *) у них были большего
размера, чем указатели на слова (int *).
Серия Eclipse MV корпорации Data General имеет три аппаратно
поддерживаемых типа указателей (указатели на слово, байт и бит), два
из которых - char * и void * используются компиляторами С. Указатель
word * используется во всех других случаях.
Некоторые центральные процессоры Honeywell-Bull используют код 06000
для внутреннего представления нулевых указателей.
Серия CDC Cyber 180 использует 48-битные указатели, состоящие из
кольца (ring), сегмента и смещения. Большинство пользователей
(в кольце 11) имеют в качестве нулевых указателей код 0xB00000000000.
Символическая Лисп-машина с теговой архитектурой даже не имеет
общеупотребительных указателей; она использует пару <NIL,0> (вообще
говоря, несуществующий <объект, смещение> хендл) как нулевой
указатель С.
В зависимости от модели памяти, процессоры 80*86 (PC) могут
использовать либо 16-битные указатели на данные и 32-битные указатели
на функции, либо, наоборот, 32-битные указатели на данные и 16-битные
- на функции.
Старые модели HP 3000 используют различные схемы адресации для байтов
и для слов. Указатели на char и на void, имеют, следовательно,
другое представление, чем указатели на int (на структуры и т.п.),
даже если адрес одинаков.
Более поздние модели используют сегмент 0, смещение 0 для нулевых указателей С, что делает необходимыми новые инструкции, такие как TCNP (проверить нулевой указатель С), которые вводятся для совместимости с уцелевшими скверно написанными С программами, основанными на неверных предположениях.
Делать специальную инструкцию в процессоре для криво написанного сишного кода. Какой багор!
−1
Давайте хвалить "C++"
https://m.vk.com/video-72495085_456239260?list=e8cb53a2003660e817&from=wall-72495085_852669
−4
#include <iostream>
using namespace std;
int main()
{
cout<<"My first govnokod"<<endl;
}
+2
http://faqs.org.ru/progr/c_cpp/watcom_c.htm
WATCOM C/C++ FAQ
version 3.0
29 Aug 1998
compiled by Lenik Terenin, 2:5061/1
Maintained by Cyril Pertsev, 2:5020/1415.1
Please send your additions and suggestions to the above address.
Для удобства потpебления данного текста
добавления выделены символом квотинга
...
> Q: Гpафическая библиотека ваткома отказывается пеpеключать pежимы/банки
> или делает это кpиво
>A: В результате ковыряния в библиотеке выяснилось, что криворукие
>ваткомовцы
>совершенно не задумываются ни о какой переносимости и универсальности их
>библиотек. В результате, если видео-карта имеет в биосе прошитое имя
>производителя или другую информацию о нем, то для нее будет вызываться
>вместо
>функции переключения банков через VESA, другая функция, работающая с
>картой
>напрямую (иногда даже через порты).
>Единственная проблема, что у каждого производителя (ATI, в моем случае),
>рано
>или поздно выходят новые и продвинутые карты, раскладка портов в которых
>может
>отличаться от той, которая использовалась в старых моделях. В результате,
>все
>это свинство начинает глючить и иногда даже виснуть.
>После того, как я руками заткнул ему возможность использовать "родные"
>фишки
>для конкретной карты и прописал пользоваться только VESA -- все работает
>как из
>пушки ;))
>Как затыкать -- а просто, есть переменная: _SVGAType, которую я
>описывается
>следующим образом: "extern "C" int _SVGAType;", и потом _перед_ (важно!)
>вызовом _setvideomode нужно сказать "_SVGAType = 1;".
Люблю читать несвежие FAQ.
Сегодня-то такого не встретишь, чтобы кто-то прямо в порты в видеокарту что-то писал, эхх...
−103
Вы никогда не пробовали палочку от эскимо засунуть себе в анус?
−1
import Router from 'koa-router';
import pmongo from 'promised-mongo';
const router = new Router();
const db = new pmongo('localhost/my-app');
const dataRequired = function *(next) {
if (typeof this.request.body['data'] === 'object') {
yield next;
} else {
this.throw(400, 'Request data is required');
}
};
Валидация, js-way
https://github.com/axept/open-parse
> Our developers have higher professional education and are experts in any of those technology
−1
#ifdef DEBUG
static int (*printfn)(FILE *stream, const char *format, ...) = fprintf;
#else
static void (*printfn)(int priority, const char *format, ...) = syslog;
#endif
/* somewhere in getopt() options */
#ifdef DEBUG
printfn = noprintf;
#else
printfn = nosyslog;
#endif
/* elsewhere in a common header file */
#ifdef DEBUG
#undef LOG_ERR
#undef LOG_WARNING
#undef LOG_INFO
#define LOG_ERR stderr
#define LOG_WARNING stderr
#define LOG_INFO stderr
#endif
void nosyslog(int priority, const char *format, ...)
{
(void)priority;
(void)format;
}
int noprintf(FILE *stream, const char *format, ...)
{
(void)stream;
(void)format;
return 0;
}
А попроще способа для --quiet / -DDEBUG нету?
+1
copy(v) char *v; { /* copy ctokn to v */
char *p;
p=ctokn;
while( *v++ = *p++ );
}
compare(v) char *v; { /* compare ctokn with v */
char *p;
for( p=ctokn; ; ++p ){
if( *p != *v++ ) return( 0 );
if( *p == 0 ) return(1);
}
}
int *yalloc(n){ /* allocate n+1 words from vector mem */
int *omem;
omem = mem;
mem =+ n+1;
if(mem-mem0 >= memsiz) error("memory overflow");
return(omem);
}
aryfil( v, n, c ) int *v,n,c; { /* set elements 0 through n-1 to c */
int i;
for( i=0; i<n; ++i ) v[i] = c;
}
union( a, b, c ) int *a, *b, *c; {
/* set a to the union of b and c */
/* a may equal b */
/* return 1 if c is not a subset of b, 0 otherwise */
_REGISTER int i, x, sub;
sub = 0;
for( i=0; i<tbitset; ++i ){
x = b[i] | c[i];
if( x != b[i] ) sub=1;
a[i] = x;
}
return( sub );
}
prlook( pp ) int *pp;{
int j;
pp = pp->lset;
if( pp == 0 ) printf("\tNULL");
else {
printf(" { " );
for( j=1; j<=nterms; ++j ){
if( (pp[j>>4]>>(j&017) )&01 != 0 ) printf( "%s ", symnam(j) );
}
printf( "}" );
}
}
https://github.com/eunuchs/unix-archive/blob/master/PDP-11/Trees/V6/usr/source/yacc/source/y1.c
https://www.tuhs.org//Archive/Distributions/Research/Dennis_v6/v6src.tar.gz
Для любителей обмазываться несвежим сишкокодом. Research Unix