- 1
- 2
- 3
- 4
- 5
Float f = 1.25f;
int i = Float.floatToIntBits(f);
i++;
f = Float.intBitsToFloat(i);
//I wanted 2.25, but got 1.2500001 instead.
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+174
Float f = 1.25f;
int i = Float.floatToIntBits(f);
i++;
f = Float.intBitsToFloat(i);
//I wanted 2.25, but got 1.2500001 instead.
http://stackoverflow.com/questions/9921690/java-increment-through-float-floattointbits
+131
#region GetObjectTree
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public RootNode getObjectTree() {
using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DSDPortal"].ConnectionString)) {
using (SqlCommand cmd = new SqlCommand("Report.ObjectTree_Read", conn))
using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) {
cmd.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
conn.Open();
sda.Fill(dt);
var RootObjects = (from row
in dt.AsEnumerable()
where row.Field<int>("IsAttribute") == 0 && (row.Field<string>("FullName").Split('.').Count() == 1 || !row.Field<string>("FullName").Contains('.'))
select new { Desc = row["Description"].ToString(), FullName = row.Field<string>("FullName"), Type = row.Field<string>("DataType") }).AsEnumerable();
RootNode rt = new RootNode();
foreach (var obj in RootObjects) {
TreeNode o = new TreeNode();
o.data.title = obj.Desc;
o.attr.Name = obj.FullName;
o.attr.Type = obj.Type;
o.children.AddRange(getChildTreeNode(dt, obj.FullName));
rt.data.Add(o);
}
return rt;
}
}
}
private List<TreeNode> getChildTreeNode(DataTable dt, string contextName) {
var nodes = from row
in dt.AsEnumerable()
where row.Field<string>("FullName") != contextName
&& row.Field<string>("FullName").StartsWith(contextName)
&& (contextName).Split('.').Count() + 1 == row.Field<string>("FullName").Split('.').Count()
select new {
Desc = row["Description"].ToString(),
FullName = row["FullName"].ToString(),
Type = row["DataType"].ToString()
};
List<TreeNode> items = new List<TreeNode>();
foreach (var o in nodes) {
TreeNode ob = new TreeNode();
ob.data.title = o.Desc;
ob.attr.Name = o.FullName;
ob.attr.Type = o.Type;
ob.children.AddRange(getChildTreeNode(dt, ob.attr.Name));
if (ob.children.Count == 0) {
ob.children = null;
}
items.Add(ob);
}
return items;
}
#endregion
и весь этот фарш, только чтобы распарсить строки типа PARENT_OBJECT.OBJECT.CHILD_OBJECT.ATTRIB UTE, и показать их в виде дерева, вместо того, чтобы сразу хранить иерархию по человечески :(
−122
protected override function getCurrentSkinState():String
{
if (!this._currentState) this._currentState = "edit";
else this._currentState = super.getCurrentSkinState() || "edit";
return this._currentState;
}
Еще грабли от Адоба.
+127
import std.stdio;
struct Vector
{
private static bool checkOpDispatch(in string str)
{
if(str.length != 4) return false;
foreach(c; str)
{
if(c != 'x' && c != 'y' && c != 'z' && c != 'w') return false;
}
return true;
}
float x,y,z,w;
@property auto opDispatch(string s)() const if(checkOpDispatch(s))
{
return Vector(mixin(s[0..1]),
mixin(s[1..2]),
mixin(s[2..3]),
mixin(s[3..4]));
}
void print() const
{
writefln("Vector: %f, %f, %f, %f", x, y, z, w);
}
}
void main()
{
//vector swizzling
Vector v = {1,2,3,4};
v.print();
auto v1 = v.wzyx;
v1.print();
auto v2 = v.xyxy;
v2.print();
}
http://ideone.com/bfA9gI
+55
#include <iostream>
#include <thread>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <iterator>
#include <future>
constexpr std::size_t array_size = 1e7;
constexpr std::size_t chunks_number = 1e3;
double local_pi(const std::size_t array_length)
{
std::vector<std::pair<double, double>> array_xy;
array_xy.reserve(array_length);
std::generate_n(std::back_inserter(array_xy), array_length, [](){
return std::make_pair(rand()/static_cast<double>(RAND_MAX),
rand()/static_cast<double>(RAND_MAX));
});
std::vector<bool> bool_z;
bool_z.reserve(array_length);
auto bool_z_insterter = std::back_inserter(bool_z);
std::for_each(array_xy.cbegin(), array_xy.cend(), [&](const std::pair<double, double>& ref){
const auto func = [](const std::pair<double, double>& ref){
return sqrt(pow(ref.first, 2) + pow(ref.second, 2)) <= 1.0;
};
bool_z_insterter = func(ref);
});
const auto sum = 4.0 * (std::accumulate(bool_z.cbegin(), bool_z.cend(), 0.0)/array_length);
return sum;
}
int main(){
const auto concurrency_level = std::thread::hardware_concurrency();
std::vector< double > chunks_vector;
chunks_vector.reserve(chunks_number);
for (std::size_t j = 0; j < chunks_number; ++j) {
std::vector<std::future<double>> futures;
futures.reserve(concurrency_level-1);
for (std::size_t i = 0; i < concurrency_level-1; ++i){
auto f = std::async(std::launch::async, local_pi, array_size/concurrency_level);
futures.push_back(std::move(f));
}
auto pi = local_pi(array_size/concurrency_level);
for (auto&& x : futures ){
pi += x.get();
}
pi /= concurrency_level;
chunks_vector.push_back(pi);
}
const auto total_pi = std::accumulate(chunks_vector.cbegin(), chunks_vector.cend(), 0.0)/chunks_vector.size();
std::cout << "Pi equals = " << std::scientific << total_pi << std::endl;
return 0;
}
Вычисляем pi методом Монте-Карло
+154
$this->db->insert("orders", $data);
//Get order's id
$this->db->select("orders_id");
$this->db->where('orders_customer_tel', $data['tel']);
$this->db->order_by("orders_id", "desc");
$this->db->limit(1);
$query = $this->db->get("orders");
foreach ($query->result_array() as $res) {
$orders_id = $res['orders_id'];
}
Ништяяяк!
+45
for (int i=0; i<N-1; ++i) for (int j=0; j<N-1; ++j)
{
int&
f1=fields[i ][j ].index,
f2=fields[i+1][j ].index,
f3=fields[i ][j+1].index,
f4=fields[i+1][j+1].index;
if (f1<=0 && f2<=0 && f3<=0 && f4<=0)
{
f1=-1;
f2=-1;
f3=-1;
f4=-1;
}
}
несколько минут пырился в код и не мог понять, где ошибка
БЛЯДСКАЯ КРЕСТОПИДЕРАСТИЧНАЯ СИСТЕМА ИМЕНОВАНИЯ ТИПОВ ПЕРЕМЕННЫХ
+88
Попытка внедрить контрол TCheckBox в заголовок 1 колонки TListView:
type
TForm1 = class(TForm)
ListView1: TListView;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FListHeaderWnd: HWND;
FListHeaderChk: TCheckBox;
FSaveListHeaderWndProc, FListHeaderWndProc: Pointer;
procedure ListHeaderWndProc(var Msg: TMessage);
end;
var
Form1: TForm1;
implementation
uses
commctrl;
{$R *.dfm}
function GetCheckSize: TPoint;
begin
with TBitmap.Create do
try
Handle := LoadBitmap(0, PChar(OBM_CHECKBOXES));
Result.X := Width div 4;
Result.Y := Height div 3;
finally
Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
CheckSize: TPoint;
HeaderSize: TRect;
begin
ListView1.HandleNeeded;
FListHeaderWnd := ListView_GetHeader(ListView1.Handle);
FListHeaderChk := TCheckBox.Create(nil);
CheckSize := GetCheckSize;
FListHeaderChk.Height := CheckSize.X;
FListHeaderChk.Width := CheckSize.Y;
// the below won't show anything since the form is not visible yet
ShowWindow(ListView1.Handle, SW_SHOWNORMAL); // otherwise header is not sized
windows.GetClientRect(FListHeaderWnd, HeaderSize);
FListHeaderChk.Top := (HeaderSize.Bottom - FListHeaderChk.Height) div 2;
FListHeaderChk.Left := FListHeaderChk.Top;
FListHeaderChk.Parent := Self;
windows.SetParent(FListHeaderChk.Handle, FListHeaderWnd);
FListHeaderWndProc := classes.MakeObjectInstance(ListHeaderWndProc);
FSaveListHeaderWndProc := Pointer(GetWindowLong(FListHeaderWnd, GWL_WNDPROC));
SetWindowLong(FListHeaderWnd, GWL_WNDPROC, NativeInt(FListHeaderWndProc));
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
SetWindowLong(FListHeaderWnd, GWL_WNDPROC, NativeInt(FSaveListHeaderWndProc));
classes.FreeObjectInstance(FListHeaderWndProc);
FListHeaderChk.Free;
end;
procedure TForm1.ListHeaderWndProc(var Msg: TMessage);
begin
if (Msg.Msg = WM_COMMAND) and (HWND(Msg.LParam) = FListHeaderChk.Handle)
and (Msg.WParamHi = BN_CLICKED) then begin
FListHeaderChk.Checked := not FListHeaderChk.Checked;
// code that checks/clears all items
end;
Msg.Result := CallWindowProc(FSaveListHeaderWndProc, FListHeaderWnd,
Msg.Msg, Msg.WParam, Msg.LParam);
end;
function GetCheckSize: TPoint;
begin
with TBitmap.Create do
try
Handle := LoadBitmap(0, PChar(OBM_CHECKBOXES));
Result.X := Width div 4;
Result.Y := Height div 3;
finally
Free;
end;
end;
+63
#include <iostream>
using namespace std;
int main() {
// your code goes here
float f = 267.0f;
unsigned char c = f;
cout << (int)c << endl;
return 0;
}
Кресты помогают обнаруживать ошибки в логике программы. За это Страуструпу респект и уважуха.
http://ideone.com/V9rgSC
+125
var
generalPtr : Pointer; // Указатель на что-нибудь
formPtr : ^TForm; // Указатель на объект формы
begin
// Форма текущего модуля адресуемая через ключевое слово self
generalPtr := Addr(self);
// Мы можем присвоить этот указатель указателю формы
formPtr := generalPtr;
// И установить заголовок формы, чтобы показать это
formPtr.Caption := 'Test program';
end;
Форма будет показана с з[color=red]а[/color]галовком:
Test program
http://www.delphibasics.ru/Pointer.php