- 1
Подскажите программистских форумов.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
Подскажите программистских форумов.
Чтобы общаться про компьютеры с братьями по разуму.
Только без анальных правил и банов за мат. Чтобы свободное общение, так сказать. Нужны ресурсы типа говнокода, но более оживленные.
0
package com.gdgkazan.summer_school_2017.homeworks.homework_3.activities.models;
import java.util.List;
import com.gdgkazan.summer_school_2017.homeworks.homework_3.activities.models.Value;
import com.google.gson.annotations.SerializedName;
/**
* Created by Dmitry on 21.08.2017.
*/
public class ResponseJokes {
@SerializedName("type")
private String type;
@SerializedName("value")
private List<Value> value;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public List<Value> getValue() {
return value;
}
public void setValue(List<Value> value) {
this.value = value;
}
}
package com.gdgkazan.summer_school_2017.homeworks.homework_3.activities.models;
import java.util.List;
import com.gdgkazan.summer_school_2017.homeworks.homework_3.activities.models.Value;
import com.google.gson.annotations.SerializedName;
/**
* Created by Dmitry on 21.08.2017.
*/
public class Value {
@SerializedName("id")
private int id;
@SerializedName("joke")
private String joke;
@SerializedName("categories")
private List<String> categories;
}
и отрывок активити
Call<ResponseJokes> call = jokeService.getJokeWithFilter(firstName,lastName);
// Отображаем progress bar
loadingDialog.show();
final List<Joke> jokes = new ArrayList<>();
call.enqueue(new Callback<List<Value>>() {
// В случае если запрос выполнился успешно, то мы переходим в метод onResponse(...)
@Override
public void onResponse(@NonNull Call<List<Value>> call, @NonNull Response<List<Value>> response) {
if (response.isSuccessful()) {
// Если в ответ нам пришел код 2xx, то отображаем содержимое запроса
//System.out.println((response.body().get(0));
for (int i = 0; i < response.body().size(); i++) {
jokes.add(new Joke(response.body().get(i).getJoke()));
}
} else {
// Если пришел код ошибки, то обрабатываем её
Toast.makeText(ThirdHomeworkActivity.this, R.string.network_error, Toast.LENGTH_SHORT).show();
}
// Скрываем progress bar
loadingDialog.dismiss();
}
// Если запрос не удалось выполнить, например, на телефоне отсутствует подключение к интернету
@Override
public void onFailure(@NonNull Call<List<Value>> call, @NonNull Throwable t) {
// Скрываем progress bar
loadingDialog.dismiss();
Toast.makeText(ThirdHomeworkActivity.this, R.string.network_error, Toast.LENGTH_SHORT).show();
Log.d("Error", t.getMessage());
}
});
0
if let attrs = profile?.attrs {
let json = NSKeyedUnarchiver.unarchiveObject(with: attrs as Data) as? [String:AnyObject]
textField.text = String(format: "%@", (json?["number"] as? String)!)
}
Кто пишет на Swift – разделит всю боль поддержки такого кода.
0
Псст. А где здесь говнокод "подопьём и разговариваем про всякое"? Я, признаться, совсем одичал за последние полгода.
−5
Никто не в курсе где сейчас Clerk с wasm.
0
//10 процентов от ширины блока
var blockPercent = ($(".prod").width() / 100) * 10;
//наведение мышью на блок
$('.prod').mouseenter(function(cursor){
//Добавление стиля для определения текущего блока
$(this).addClass('selected-prod');
var offset = $(this).offset();
//left-right
if (cursor.pageX - offset.left < blockPercent) {
$('.selected-prod .prod-description').css({'height': '100%','left':'0px'});
$('.selected-prod .prod-description').animate({'width': '100%'},200);
}
//right-left
if (cursor.pageX - offset.left > $(this).width() - blockPercent) {
$('.selected-prod .prod-description').css({'height': '100%', 'right':'0px'});
$('.selected-prod .prod-description').animate({'width': '100%'},200);
}
//top-down
if (cursor.pageY - offset.top < blockPercent) {
$('.selected-prod .prod-description').css({'width': '100%'});
$('.selected-prod .prod-description').animate({'height': '100%'},200);
}
//down-top
if (cursor.pageY - offset.top > $(this).height() - blockPercent) {
$('.selected-prod .prod-description').css({'width': '100%'});
$('.selected-prod .prod-description').animate({'height': '100%','bottom':'0px'},200);
}
});
Наткнулся на проекте. Первая мысль: "Оно слишком быстро работало!"
+3
// https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/code/c/1.1%EF%BC%9A%E5%B7%A6%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.c
#include <stdio.h>
#include <string.h>
//字符串旋转问题,例如abcdef 左旋2位 变成 cdefab
//暴力移位法
void leftShift1(char * arr, int n)
{
size_t tmpLen = strlen(arr);
char tmpChar;
int i, j;
if (n >= 0)
{
for (i = 0; i < n; i++)
{
tmpChar = *arr;
for (j = 0; j < tmpLen - 1; j++)
{
*(arr + j) = *(arr + j + 1);
}
*(arr + tmpLen - 1) = tmpChar;
}
}
else
{
for (i = 0; i < -n; i++)
{
tmpChar = *(arr + tmpLen - 1);
for (j = tmpLen - 1; j > 0; j--)
{
*(arr + j) = *(arr + j - 1);
}
*arr = tmpChar;
}
}
}
Копаясь в гитхабе, нашел я тут The Art Of Programming By July, написанный каким-то китайцем.
https://github.com/julycoding/The-Art-Of-Programming-By-July
0
public static int index(string word, char comp)
{
int k = -1;
for (int i = 0; i < word.Length; i++)
if (word[i] == comp)
{
k = i;
break;
}
return k;
}
public static char[] strtocharr(string str)
{
char[] tmp = new char[str.Length];
for (int i = 0; i < tmp.Length; i++)
tmp[i] = str[i];
return tmp;
}
public static string charrtostr(char[] charr)
{
string tmp = null;
for (int i = 0; i < charr.Length; i++)
tmp = String.Format("{0}{1}", tmp, charr[i]);
return tmp;
}
public static char maskfromword(string word)
{
return word[word.Length - 1];
}
public static string maskfromword(string word, int n)
{
string mask = null;
for (int i = 0; i < n; i++)
mask = String.Format("{0}{1}", mask, word[word.Length - 1]);
return mask;
}
public static char Counter(char crnt, string word)
{
if (crnt != maskfromword(word))
crnt = word[index(word, crnt) + 1];
else
crnt = word[0];
return crnt;
}
public static string Counter(string prev, string word, int k)
{
char[] tmp = strtocharr(prev);
if (k >= prev.Length - 1)
k = prev.Length - 1;
else
for (int i = k + 1; i < prev.Length; i++)
tmp[i] = word[0];
if (tmp[k] == maskfromword(word))
return MultiCounter(prev, word, k - 1);
else
tmp[k] = Counter(tmp[k], word);
return charrtostr(tmp);
}
Список методов, позволяющие сделать счетчик по словарю (полезно для генераторов словарей) на любое количество символов.
+1
<!doctype html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<?
$title = filter_var($_REQUEST["title"], FILTER_SANITIZE_STRING);
$image = filter_var($_REQUEST["image"], FILTER_SANITIZE_STRING);
$text = filter_var($_REQUEST["text"], FILTER_SANITIZE_STRING);
?>
<meta property="og:type" content="article" />
<meta property="og:title" content="<?=$_REQUEST['title'];?>" />
<meta property="og:description" content="<?=$_REQUEST['text'];?>" />
<meta property="og:image" content="<?=$_REQUEST['image']?>" />
<?$d = 'Некий URL?title='.urlencode($title).'&image='.urlencode($image).'&text='.urlencode($text);?>
<meta property="og:url" content="<?=$d?>" />
<title><?=$_REQUEST['title'];?></title>
<script type="text/javascript">
window.location = "Еще один захардкоженый URL";
</script>
</head>
<body>
<img src="<?=$_REQUEST['image']?>" />
</body>
</html>
все секурно
+1
static inline void set0b (const uint8_t at, uint64_t bm[static 4])
{
bm[at / 64] &= ~(1ULL << (at % 64));
}
static inline void set1b (const uint8_t at, uint64_t bm[static 4])
{
bm[at / 64] |= 1ULL << (at % 64);
}
static inline void inv_b (const uint8_t at, uint64_t bm[static 4])
{
bm[at / 64] ^= 1ULL << (at % 64);
}
static inline uint8_t find_empt_pos (const uint64_t bm[static 4])
{
if (bm[0] != UINT64_MAX)
{
return __builtin_ctzll(~bm[0]) + 64 * 0; // __builtin_ctzll - https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html
}
if (bm[1] != UINT64_MAX)
{
return __builtin_ctzll(~bm[1]) + 64 * 1;
}
if (bm[2] != UINT64_MAX)
{
return __builtin_ctzll(~bm[2]) + 64 * 2;
}
if (bm[3] != UINT64_MAX)
{
return __builtin_ctzll(~bm[3]) + 64 * 3;
}
fprintf(stderr, "ERROR! No empty space!\n");
exit (-1);
}
static inline uint8_t allocate_ll (uint64_t bm[static 4])
{
uint8_t tmp = find_empt_pos (bm);
set1b (tmp, bm);
return tmp;
}
static inline void inject(const uint8_t prev_p, const uint8_t next_p, const uint8_t at, struct ll_data a[static 256])
{
a[next_p].ll.prev = at;
a[prev_p].ll.next = at;
a[at].ll.prev = prev_p;
a[at].ll.next = next_p;
}
static inline void remove_betw(const uint8_t prev_p, const uint8_t next_p, struct ll_data a[static 256])
{
a[prev_p].ll.next = next_p;
a[next_p].ll.prev = prev_p;
}
static inline void remove_at(const uint8_t at, struct ll_data a[static 256], uint64_t bm[static 4])
{
uint8_t prev_t = a[at].ll.prev;
uint8_t next_t = a[at].ll.next;
set0b (at, bm);
a[at].ll.prev = next_t;
a[at].ll.next = prev_t;
}
void add_elem_next (struct ll_all *a, const uint8_t elm, const int value)
{
uint8_t pos = allocate_ll (a->bm);
inject(elm, a->arr[elm].ll.next, pos, a->arr);
set_elm (pos, value, a->arr);
}
void add_elem_prev (struct ll_all *a, const uint8_t elm, const int value)
{
uint8_t pos = allocate_ll (a->bm);
inject(a->arr[elm].ll.prev, elm, pos, a->arr);
a->arr[pos].data = value;
}
void rem_elem_next (struct ll_all *a, const uint8_t elm)
{
set0b (a->arr[elm].ll.next, a->bm);
remove_betw (elm, a->arr[a->arr[elm].ll.next].ll.next, a->arr);
}
void rem_elem_prev (struct ll_all *a, const uint8_t elm)
{
set0b (a->arr[elm].ll.next, a->bm);
remove_betw (a->arr[a->arr[elm].ll.prev].ll.prev, elm, a->arr);
}
Тру-царская неанскилльная реализация двусвязного списка внутри массива.
К сожалению, весь код не помещается, см https://wandbox.org/permlink/Ky8fnuqyE0Ahxftm