- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
static String asHex(int i){
return
Joiner.on( " " ).join(
Splitter.fixedLength( 4 ).split(
String.format("%s8", Integer.toHexString(i))
.replace(' ', '0')
)
);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+174
static String asHex(int i){
return
Joiner.on( " " ).join(
Splitter.fixedLength( 4 ).split(
String.format("%s8", Integer.toHexString(i))
.replace(' ', '0')
)
);
}
LINQ-мышление в жабе.
−131
[self
performSelectorOnMainThread: @selector(_blockCaller:)
withObject: ^{
[self _reportAchievement:achievement listener:listener];
}
waitUntilDone: YES
];
<...>
- (void) _blockCaller:(void(^)())blockHandler {
blockHandler();
}
GCD не в моде.
+156
function search(url,param)
{
$("#rightContent").hide()
setBlock("Загрузка")
loadLeftMenu()
$("#content").load("/search", function(response, status, xhr){
$("#Subscription").show()
queryStr=param.split("&")
if (queryStr.length==2){
str=(queryStr[0]).replace("querystr=","")
$("#querystr").val(decodeURI(str.replace(/\+/g," ")))
region=((queryStr[1]).replace("region=","")).split(",")
replaceItemInArray(region,"59","59,81")
removeFromArray(region,'81')
replaceItemInArray(region,"75","75,80")
removeFromArray(region,'80')
updateMultiselect("#region", region, "region")
}
if (queryStr.length==3){
str=(queryStr[1]).replace("querystr=","")
$("#querystr").val(decodeURI(str.replace(/\+/g," ")))
region=((queryStr[2]).replace("region=","")).split(",")
replaceItemInArray(region,"59","59,81")
removeFromArray(region,'81')
replaceItemInArray(region,"75","75,80")
removeFromArray(region,'80')
updateMultiselect("#region", region, "region")
}
if (queryStr.length==4){
str=(queryStr[0]).replace("querystr=","")
$("#querystr").val(decodeURI(str.replace(/\+/g," ")))
region=((queryStr[1]).replace("region=","")).split(",")
if (queryStr[2]=='fz94=true'){
$('#fz94').attr('checked','checked')
}else{
$('#fz94').removeAttr('checked')
}
if (queryStr[3]=='fz223=true'){
$('#fz223').attr('checked','checked')
}else{
$('#fz223').removeAttr('checked')
}
replaceItemInArray(region,"59","59,81")
removeFromArray(region,'81')
replaceItemInArray(region,"75","75,80")
removeFromArray(region,'80')
updateMultiselect("#region", region, "region")
}
if (queryStr.length==5){
str=(queryStr[1]).replace("querystr=","")
$("#querystr").val(decodeURI(str.replace(/\+/g," ")))
region=((queryStr[2]).replace("region=","")).split(",")
if (queryStr[3]=='fz94=true'){
$('#fz94').attr('checked','checked')
}else{
$('#fz94').removeAttr('checked')
}
if (queryStr[4]=='fz223=true'){
$('#fz223').attr('checked','checked')
}else{
$('#fz223').removeAttr('checked')
}
replaceItemInArray(region,"59","59,81")
removeFromArray(region,'81')
replaceItemInArray(region,"75","75,80")
removeFromArray(region,'80')
updateMultiselect("#region", region, "region")
}
// Ну и так далее
Разбор строки запроса
+69
String response = HttpLoader.loadString(params[0]);
Gson gson = new GsonBuilder().registerTypeAdapter(ArrayList.class,
new JsonCollectionSerializer<ArrayList<MyClass>>()).
create();
ArrayList<MyClass> items_generic = new ArrayList<MyClass>() { };
ArrayList<MyClass> items = gson.fromJson(response, items_generic.getClass().getGenericSuperclass());
return items;
public class JsonCollectionSerializer<E> implements
JsonSerializer<Collection<E>>, JsonDeserializer<Collection<E>> {
@SuppressWarnings("unchecked")
public Collection<E> deserialize(JsonElement element, Type type,
JsonDeserializationContext context) throws JsonParseException {
JsonArray items = element.getAsJsonArray();
ParameterizedType deserializationCollectionType = ((ParameterizedType) type);
Type collectionItemType = deserializationCollectionType.getActualTypeArguments()[0];
Collection<E> list = null;
try {
list = (Collection<E>) ((Class<?>) deserializationCollectionType.getRawType()).newInstance();
for (JsonElement e : items) {
list.add((E) context.deserialize(e, collectionItemType));
}
} catch (InstantiationException e) {
throw new JsonParseException(e);
} catch (IllegalAccessException e) {
throw new JsonParseException(e);
}
return list;
}
}
Жабоблядство и шаблоны и генерики:
Чтение из json в коллекцию с шаблонным параметризованным типом.
+159
class CHTMLFormGenerator {
...
public $formName;
const formName = 'form';
function GetFormName() {
if(isset($this) && $this -> formName)
return $this -> formName;
else
return self::formName;
}
...
}
+71
private byte[] readBytes(InputStream pInputStream, int pLength, int pRetryCounter) throws IOException, WhateverException
{
byte[] bytes = new byte[pLength];
int bytesRead= pInputStream.read(bytes, 0,pLength);
if (bytesRead == -1)
{
throw new WhateverException("End of InputStream has been reached");
}
if (pLength != bytesRead)
{
byte[] bytesReadNextAttempt = readBytes(pInputStream, pLength-bytesRead, pRetryCounter + 1);
if (pLength != bytesRead + bytesReadNextAttempt.length)
{
// less bytes available; connection was closed
throw new WhateverException( ... );
}
System.arraycopy(bytesReadNextAttempt, 0, bytes, bytesRead, bytesReadNextAttempt.length);
}
return bytes;
}
поддержка паршиал ресив. такого "метода" я еще не видел.
ЗЫ а че в жабе нету никакого MSG_WAITALL?
+9
#include <iostream>
#include <iterator>
#include <algorithm>
#include <array>
#include <memory>
using namespace std;
template<size_t N1, size_t N2, class T1, class T2,
class T = typename common_type<T1, T2>::type>
T (*concatCArray(const T1(&arr1)[N1], const T2(&arr2)[N2]))[N1+N2]{
const auto result = (T(*)[N1+N2]) new T[N1+N2];
copy(arr2, end(arr2), copy(arr1, end(arr1), *result));
return result;
}
template<std::size_t N, class T>
void viewCArrayPtr(T (*arr)[N]){
copy(*arr, end(*arr), ostream_iterator<T>(cout, " "));
}
template<size_t N1, size_t N2, class T1, class T2,
class T = typename remove_const<typename common_type<T1, T2>::type>::type>
array<T, N1+N2> concatArray(const array<T1, N1> &arr1, const array<T2, N2> &arr2){
array<T, N1+N2> result;
copy(begin(arr2), end(arr2), copy(begin(arr1), end(arr1), result.begin()));
return result;
}
template<std::size_t N, class T>
void viewArray(const array<T, N> arr){
copy(begin(arr), end(arr), ostream_iterator<T>(cout, " "));
}
int main() {
int arr1[]{0,1,2,3}, arr2[]{4,5,6};
auto ca = concatCArray(arr1, arr2);
unique_ptr<int[]> safe(*ca);
viewCArrayPtr(ca);
cout<<endl;
array<float, 2> a {1,2.5};
array<int, 3> b{3, 4, 5};
viewArray(concatArray(a, b));
return 0;
}
От туда.
http://ideone.com/3KjycI
+4
namespace std
{
template<class T, class T2> class common_type<::std::shared_ptr<T>, ::std::shared_ptr<T2> >: public ::std::common_type<T, T2>{};
+3
class Base
{
void fooo() { ... }
};
class Derived
{
void fooo() { ... }
};
void DoSmth (Base& b)
{
b.fooo();
};
Derived d;
DoSmth(d); // полная статика, так что там внутри вызовется метод базы
void DoSmth (polymorth<Base>& b) // это структура, которая хранит ссылку на объект и ссылку на таблицу методов
{
b.fooo();
};
polymorth<Base>b = Derived();
// инициализация при объявлении, чтобы было понятно, сколько памяти выделить
// в структуре записалась таблица методов Derived
DoSmth(b); // вызовется метод наследника
...
// в конце вызывается деструктор наследника
Творчество оттуда.
"Основная идея - избавить от вопроса "делать ли деструктор виртуальным"
+10
typedef boost::shared_ptr<LPDIRECT3D9> Direct3dShared;
Те кто знают, что такое в гейдеве LPDIRECT3D9 и IDirect3D9 - поймут.
Думаю сегодня даже не нужно писать с какого это сайта.