[Boards: 3 / a / aco / adv / an / asp / b / bant / biz / c / can / cgl / ck / cm / co / cock / d / diy / e / fa / fap / fit / fitlit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mlpol / mo / mtv / mu / n / news / o / out / outsoc / p / po / pol / qa / qst / r / r9k / s / s4s / sci / soc / sp / spa / t / tg / toy / trash / trv / tv / u / v / vg / vint / vip / vp / vr / w / wg / wsg / wsr / x / y ] [Search | Free Show | Home]

/dpt/ - Daily Programming Thread

This is a blue board which means that it's for everybody (Safe For Work content only). If you see any adult content, please report it.

Thread replies: 330
Thread images: 28

File: TAOCP.png (1MB, 1000x742px) Image search: [Google]
TAOCP.png
1MB, 1000x742px
What are you working on, /g/?

Old thread: >>58697071
>>
File: computers.png (1MB, 1920x1080px) Image search: [Google]
computers.png
1MB, 1920x1080px
>it's the same autist making these threads early because he's triggered by the regular OPs
>>
File: crypts-folders.webm (607KB, 960x482px) Image search: [Google]
crypts-folders.webm
607KB, 960x482px
What do I add to this OS?
>>
>>58701004
make the desktop a maze, like an actual crypt

randomly generates each time it starts up
your mouse is locked in and can't cross walls
>>
if you aren't editing your files with ed it doesn't qualify as programming.
>>
>>58701003
The only one triggered here is you.
>>
TAOCP is a meme
>>
>>58701011
Hmm...interesting. I like it. I'll make it a app. So it's voluntary.
>>
>>58701014
>ed
Erectile dysfunction? I don't even...
>>
>>58701051
>voluntary
no
>>
>>58701056
It would be just 100% tedium if the desktop was a maze.
>>
>>58701075
do it

it's called cryptos
>>
i live in seattle can i get a code monkey job with no degree
>>
>>58701094
do you know Java?
>>
>>58699947
Ok, I made my pull request:
https://github.com/Dako300/BasicTV/pull/2
It should trigger recompilation for the relevant files when a header changes.
I also made the output fancy, but you can remove that if you want.
>>
>>58701108
Thanks
>>
Tell me why I shouldn't use C
>>
>>58701144
You should use C though.
>>
>>58701144
Because you could use Jai instead.
>>
>>58701144
Bad programming practice
>>
>>58701004
actual functionality.
>>
>>58701144
Memory management
No exception system
Macros

Unless you're really familiar with it or you have to use a C library without bindings, it is extremely hard to use properly.
>>
>>58701173
>Memory management
???
>>
>>58701187
It's hard to use properly if you're coming from a garbage collected language.
>>
>>58701173
>Memory management
Every language has memory management.
>No exception system
That is a good thing. Exceptions are terrible.
Also, setjmp/longjmp exists, for all your shitty needs, but I don't recommend to people that they use it.
>Macros
Macros are a good thing. Even a shitty text replacement macro system is better than no macro system.
>>
In k&r c, is it important to do every exercise if I already have experience from AP Comp sci and am going to school for CE In a few months? Could I just look at the solution to some exercises that I don't want to spend the time on and read documentation about it then move to the next section? I only ask because my schedule is getting pretty tight but I still want to make room for /dpt/ stuff.
>>
>>58700979
a jit compiler for a language used to generate fractals / music.
ncurses based piano using said language to generate notes (uses sndio).
because poor and want to learn
>>
>>58701173
>No exception system
>what is CEXCEPTION
>>
>>58701200
non argument

garbage collection is shit for C

"it's hard" is not an argument
>>
>>58701202
I meant that manual memory management is hard, and only useful for extreme optimization.

I suppose that exceptions can be considered to be bad, you're right. What I really meant is that without a debugger, the language does not give a description of the error that occured.

Macros, compared to templates, are incredibly unwieldy and hard to debug.
>>
>>58701122
Also, a few things minor things I recommend you do with your program:
Add a .gitignore, add *.o, .depend, basictv and whatever your text editor spits out (e.g. *.swp for vim).
It's just very nice to have, so you don't accidentally commit some crap to your repo and cleans up the git status output.

You should use pkg-config instead of just specifying off of the -l commands yourself. It's a bit more portable that way.
>>
>>58701251
Okay. I might start doing these since I've built up an audience
>>
>>58701250
>manual memory management is hard
You should stick to webdev.
>>
>>58701250
>manual memory management is hard
You didn't say "_manual_ memory management". You just said "memory management".
>is hard
No it's not. As long as you have a clear idea about pointer ownership, it's actually pretty damn easy.
>the language does not give a description of the error that occured
strerror(errno)/perror() exists. A lot of libraries also provide similar facilities.
>Macros, compared to templates
They are not the same thing. Macros (in C at least) are just a simple tool to replace one bit of text with another bit of text.
>>
>>58701233

See >>58701250 for some more explanation of my thoughts.

The thing about C memory management is that it relies on the programmer to correctly dispose of and create values, which if done improperly will cause obscure but serious problems which are hard to debug for a less experienced programmer.

Of course, for a C expert all of these problems are far less severe, and for that person, C becomes an incredibly powerful tool.
>>
>>58701281
>for a less experienced programmer
Why on earth should everything have to cater to idiots?
It's not Go we're talking about.
>>
>>58701202
>Exceptions are terrible.
Epic opinion! You'd think that a C user would understand the concept of picking the right tool for the job.
>>
>>58701281
GC for C might be the dumbest thing I've ever heard
>>
>>58701295
>Hidden goto
Yeah, no thanks.
It's not even a niche opinion to think that exceptions are terrible, unless if you're a Java programmer or something.
>>
>>58701295
just use the (ExceptT e) monad transformer
>>
>>58701310
>spending extra cycles on comparing and branching for something that normally won't even happen
>>
>>58701331
Exceptions aren't free, you know.
>>
>>58701280
I'm sorry. I meant that `manual` memory management is `hard to learn and use if inexperienced.`

Templates and macros are very commonly used for the same purpose, and my opinion is that templates are better in that situation.
>>
Haskell Fags will defend this.
{-# LANGUAGE DeriveDataTypeable #-}
module Smuggle where
import Control.Exception
import Data.Typeable
import System.IO.Unsafe

data Smuggle a = Smuggle !a deriving (Typeable, Show)
instance (Typeable a, Show a) => Exception (Smuggle a)

smuggle :: (Typeable a, Show a) => a -> b
smuggle x = throw (Smuggle x)

recover :: (Typeable a, Show a) => b -> a
recover x = unsafePerformIO $ do
val <- try (evaluate x)
case val of
Left (Smuggle x) -> return x
Right _ -> undefined

idInt :: Integer -> Integer
idInt x = x

main :: IO ()
main = putStrLn (recover (idInt (smuggle "foo")))
>>
>>58701350
Haskell's built in exceptions are a mistake, use monads for that instead
>>
>>58701338
Unless you're terribly concerned about executable size, actually, they are. When they're not thrown, at least. This is talking about exceptions that are implemented using a map from instruction pointer addresses to exception handler subroutines, of course, not SJ/LJ exceptions.
>>
>>58701302

I'm sorry if I implied that C should have GC; obviously, that would be ridiculous. I meant that other languages are more useful in many situations because they have easier to use memory management models.
>>
>>58701361
manual memory is critically important for C, but maybe having scoped objects (objects in the C sense) isn't a bad idea
>>
>>58701372
>having scoped objects
They're called automatic variables.
You know, the normal kind of variable.
void fn()
{
int a;
{
int b;
} // b no longer exists
} // a no longer exists
>>
>>58701394
I mean with custom constructors and cleanup
>>
>>58701406
That's not a scoped variable. That's RAII.
However, that feature is not in the spirit of C, and will probably never be introduced.
>>
>>58701394
>>58701406
like C++ filestreams

{
std::fstream f (file);
// file opened
... do stuff with f ...
// file closed
}
>>
>>58701406
>>58701413
gcc and clang have the cleanup attribute
>>
>>58701413
in that respect it is like Java
>>
>>58701421
C extensions are not C.
They probably only have that because those compilers also support C++, so it isn't really a big deal for them to implement it in C.
>>
The only thing I'm missing from C ist stack-arrays of variable length. Something like this:
struct S {
bool a;
bool b;
int c;
};

int f(char *filename, int len) {
int res = 0;
struct S ary[len]; // look ma, no heap!
// load stuff from files into the structs and do some operations on the data (setting res to some value)
return res;
}
>>
>>58701462
you mean in C++? because C has that
>>
>>58701462
inb4 butthurt C++ (like Ruby) claim they don't want that feature.
>>
>>58701470
>because C has that
Show me the code then.
>>
>>58701473
>Show me the code then.
>>58701462
>>
File: 2017-01-29-184835_644x388_scrot.png (12KB, 644x388px) Image search: [Google]
2017-01-29-184835_644x388_scrot.png
12KB, 644x388px
>>58701473
>>58701479
Also, here is more proof.
>>
>>58701473
it's a part of c99

http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

section 6.7.5.2
>>
>>58701519
>>58701520
Oh. I could swear "some" C(++) compiler threw an error at me last time I tried it.
>>
>>58701462
Personally, I have only ever used VLAs for extreme optimization cases when the amount of array elements is less than 256.
>>
>>58701527
You were probably using a C89 compiler like an idiot.
>>
>>58701527
Maybe it was Visual Studio? Hmm.

>>58701528
Putting too much data on the stack is dumb anyway. But it's really convenient not having to allocate memory on the heap.

>>58701533
It might have been Visual Studio at work.
>>
>>58701097
hey, I have the same aspirations as that guy and I know some Java and I'm learning Spring. What should I do to reach to achieve employed code-monkey status?
>>
>>58701562
if you know Java you've already completed your first step by becoming a code monkey
>>
>>58701565
what else?
>>
File: rust.png (68KB, 702x336px) Image search: [Google]
rust.png
68KB, 702x336px
Is pic related a complete meme?
>>
>>58701623
Are you good with OOP yet?
>>
>>58701639
Both.
>>
>>58701639
No it's pretty good.
>>
>>58701528

>when the amount of array elements is less than 256
Why not simply make an array of size 256?
>>
>>58701639
It's doomed. They're never going to add HKTs. They should have been designed in from the start but they weren't.

Just another wasted effort. Countless man-hours down the drain.
>>
>>58701666
>HKTs
Hong Kong Telecom?
>>
>>58701678
Yeah
>>
>>58701663
>>58701528
But VLAs are more useful than just that.
It allows you to do more fancy shit with the type system and convey meaning to the compiler and programmer.
void my_fn(size_t len, int arr[static len])
{
// Do something with arr, knowing that it's non-null and at least 'len' elements
}

void my_fn2(void *base, size_t size, size_t nmemb)
{
unsigned char (*arr)[size] = base;

// Iterate over array of unknown type, but known size
for (size_t i = 0; i < nmemb; ++i) {
// ...
}
}
>>
>>58701462
Would be nice, but you should consider C++ to be distinct from C, only looking very similar in syntax. It's not incredibly difficult to use a vector for the same goal, and the memory can be moved out of scope easier. Yes, its not guaranteed to be stack allocated, and yes its more verbose. But welcome to C++
>>
File: SASS.jpg (43KB, 1600x800px) Image search: [Google]
SASS.jpg
43KB, 1600x800px
Is it a good idea to learn SASS instead of CSS?
>>
You better have a code of conduct or I'm gonna report you to github
>>
>>58701715
>hacky dependent types
Nice feature
>>
>>58701719
no. learn CSS then learn SASS or LESS or whatever the fuck it is that's abstracting CSS
>>
>go to college for IT
>learning basic programming stuff
>Java, C#, some web languages
>get to final term
>think it's time for some challenging concepts or algorithms and how sorting works
>nope it's all fucking meme languages like Ruby+Rails, android dev, and python
>because apparently this is all employers want

how do I teach myself non-OO languages? I want to learn something fast
>>
File: 1374574532536.jpg (41KB, 493x575px) Image search: [Google]
1374574532536.jpg
41KB, 493x575px
>>58701756
>IT
>>
>>58701715
I'd like to use int ar[static 1] as a portable nonnull type but I don't think any compiler implemented proper warnings for that last I checked. Modern compilers might do that now.
>>
>>58701766
>I don't think any compiler implemented proper warnings for that last I checked
I think clang does.
>>
>>58701756
Just download haskell or racket and start playing with them. Since you dont care about getting a job you dont have to worry about them being meme languages or not.
Try to implement a lisp evaluator, and haskell's type inference, in either or both languages.
>>
>>58701756
Implement a simple game (i.e Tetris) using C and OpenGL.
>>
>>58701797
Also SDL/GLFW for timers/input handling.
>>
>>58701756

>how do I teach myself ...
Pick up a book or google for some tutorials. Why do you need our advice on this?
>>
>>58701756
https://en.wikibooks.org/wiki/Haskell
>>
>>58701003
Why didn't you do a proper thread after bumplimit of the old thread?
Your efforts would be appreciated.
>>
Trying to work with UDP sockets in C++ with a client and a server talking to each other over localhost. Right now it's just the server receiving all the packets and the client can't get anything back. I tried looking up tips on how to solve this problem and I don't know if I just need to improve my googling skills or whatever but I can't find anything to help me.

Program flow:
>server starts
>server spins up socket and binds to port
>client starts
>client spins up socket, but doesn't bind (bind would always fail since the server was already bound)
>client sends packet
>server gets packet
>server sends packet in response
>server gets the response packet

Kinda new to this socket thing, and I'd appreciate someone telling me how to fix my autism.
>>
> the color for Java on github is brown
>>
>>58701855
You need to use threads and/or non-blocking I/O.
>>
>>58701863
OOP == POO
>>
>>58701855
What does the NAT look like? In such a situation, both the client and the server should have their ports forwarded (unless this is all local).
>>
>>58701863
>Java
>coffee
>it's coffee-colored
Yeah, dude. Yeah. It is brown.
>>
>>58701891
Both are running on localhost which I believe is the root of the problem, and which I am trying to make work.
>>
>>58701913
If you are using UDP, they can be on the same host, but they can't be listening on the same port. Even TCP would allow that (as long as the ports differ).
>>
I want to learn C. Should I read K&R and then something more modern like C Primer Plus?
>>
>>58701928
So, if I want to have a client and server send information to each other on the same machine with using UDP sockets, I can't do it?
>>
>>58701898
> Coffee-colored
I'm what world?
>>
>>
>>58701955
No. There are two ports used per program instance: the sending port (probably random) and the receiving port. As long as the receiving ports aren't the same, you can send information between the two machines.

Can you post some source code?
>>
What compiler should I use for Lisp? I'm going to meme it up, and read SICP. I'm only familiar with gcc/g++, and open-jdk.
>>
>>58701973
This is some code from a socket class that both the client and server use.

http://pastebin.com/yf7e5crU
>>
File: Italian Food Coding Spaghetti.jpg (35KB, 500x384px) Image search: [Google]
Italian Food Coding Spaghetti.jpg
35KB, 500x384px
>>58700979
can anyone explain how returning functions work?

I understand most coding concepts but codecademy didn't teach me and I'm not far enough in CS50 for that to help either. I've already made some game mods in Lua and ran a basic JS course. Just hit a brick wall in mod development and I need to figure this shit out

ty anons
>>
How do I much fun and popular game make with C?
>>
>>58701639
both actually are trash
>>
>>58702046
do you mean that as in, how a programmer can assume such a function works, or how the actually work in a low level way, or something else?
>>
>>58702063
sorry anon I'm still not super familiar with everything yet, I've been constantly studying and practicing for the past few weeks

I'm trying to write an addon that calls a pre defined function to the game and what I need is to return the string. In lua I see lots of returns in other peoples code too and I don't quite understand what it's doing.

Give me a moment and I'll post a code example if you want.
>>
Can I have conditional replaces in regexes?
Let's say, given some /^([a-z])([a-z]).*/ pattern, I want to replace first group with [A-Z], and the second group with [z-a].
My language is Perl.
>>
>>58702047
you don't, use a game engine
>>
>>58702063
>>58702072
example (sorry for not explaining funcs)

function find:Finder()
local location = GetLocationName()
return location
end
>>
>>58702085
In Lua, if there's a function returning a string, you can just substitute the part where you want to use it with the name of the function itself.
Like this:
print(find:Finder())


If you're reusing the same return variable from the function multiple times, storing it in a temporary variable would probably be faster:
myVariable = find:Finder()


Lua functions, similar to Python, can return any number of arguments. You can receive and store multiple variables separated with commas
myVar1,myVar2 = find:Finder()


Though you'll have to handle functions that return varying number of arguments each time in a different way, the above should be enough to get you started.
>>
File: 1479961626143.jpg (109KB, 815x981px) Image search: [Google]
1479961626143.jpg
109KB, 815x981px
>multiple return values
>not tuples
>>
>>58702123
thank you for the response, I'll paste that in a doc so I use it for future reference

I don't understand what return even does though.

In the example I give it fires the GetLocationName() function and then I do not understand line 3. return location. Does that save the result of GetLocName() into my local var location? Or what goes on?

I tried googling before coming here and wasting someones time but I coudn't find anything that just explained what return does
>>
>>58702168
The example you posted is a bit stupid in the way it does things, but basically, translated roughly into plain english:

- Store in a function-local variable called "location" the return variable of getLocationName().
- Return the variable called "location" to the calling function.

Both of those could've been combined into a single line:
return GetLocationName()

But for whatever reason, the author chose not to do so, either because he intends to reuse the variable "location" in a future extension to the Finder function, or because you decided to only post a shorter excerpt of the complete function.

If you still don't understand what return does at this point, I'd recommend going back to a programmer's beginner guide. It's a very fundamental aspect of programming, and I don't think I can explain it any better.
>>
>>58702023
SICP is in Scheme.
SICP's author recommends the MIT Scheme implementation, though you can use about any you'd like, like Racket (PLT Scheme).
>>
>>58702205
I am the author lol, I've been trying different things to get it to run because I don't know how to properly use it. The other addons I made were much simpler.

Thank you again for the help that is the answer I was looking for and easy to understand.

Another question: if it saves the result as a function local variable, how do I use it? If I understand scope correct then only that function should be able to read my return. And I was also taught that return should be at the end of the function. If I can't call it outside of the function, and I can't write it to my global table, how can you interact with your returned variable?
>>
File: lainchan.png (225KB, 400x400px) Image search: [Google]
lainchan.png
225KB, 400x400px
What are some good C codebases to study?
>>
>>58702207
> SICP's author recommends the MIT Scheme implementation
Back in the 70s, yes. Today there's little point in not just using the SICP module for Racket.
>>
>>58702207
Should I just use this?
https://www.gnu.org/software/mit-scheme/

Is it like gcc where I just compile the program in terminal?
>>
File: curry_oriented_programming.jpg (565KB, 2919x2817px) Image search: [Google]
curry_oriented_programming.jpg
565KB, 2919x2817px
Threadly reminder that if you use garbage collected languages you belong on a designated street in Delhi.
>>
>>58702310
Junior and Middle engineers are concerned about this shit. Senior engineers use the best tool to solve a task.
>>
>>58702341
Absolutely designated
>>
>>58702155
>not using http://clhs.lisp.se/Body/f_values.htm
>>
>>58702390
This looks like more fucking stupid lisp messing everything up.

Is "multiple values" different to a list of values, despite it being dynamically typed?
>>
File: LUl9yOA.jpg (272KB, 1200x1600px) Image search: [Google]
LUl9yOA.jpg
272KB, 1200x1600px
>>58702242
>>58702205
tried printing the function like you said and it's nicer than what I had ty

for some reason it prints [Empty String] so I'm still not using it quite right

function find:Finder()
local location = GetLocationName()
return location
end

--outside function scope

print(find:Finder())

This is obv not the intent of the program but if I can get it to print then I am able to use the var in the rest of the code.
>>
>>58702360
Only junior and middle engineers are concerned about this shit. Senior engineers use pointers or heterogeneous parallel programming only when they're better suited for a task.
>>
File: Untitled.png (6KB, 324x91px) Image search: [Google]
Untitled.png
6KB, 324x91px
Redpill me on all of these things /g/
>>
>any slags
just you
>>
Is anyone interested in working with me to make an MMORPG in Haskell?
>>
>>58702417
Doesn't have to be.
>>
>>58702482
All trash.

>>58702496
Not really.
>>
>>58702496
what do you want?

also, holy shit, someone do an Erlang MMO
that is what Erlangs made for isnt it
>>
>>58702518
Erlang is a terrible language for everything else though.
>>
File: just_to_inteligent.png (86KB, 500x399px) Image search: [Google]
just_to_inteligent.png
86KB, 500x399px
>>58702496
>MMORPG in Haskell
>>
File: squidward-paper-kiss.gif (286KB, 500x309px) Image search: [Google]
squidward-paper-kiss.gif
286KB, 500x309px
>debugging massive program since 3pm this afternoon with no progress
>have pages of going through code step by step with test data in notebook to see whats wrong
>9 hours later
>still don't know what the fuck is wrong
>decide to add a - 1 to a conditional statement and hope it just werks
>it works
>mfw

Don't know what I did but don't care anymore.
>>
Is Haskell worth learning?
>>
>When your code works but you don't know how to refactor it
:[
>>
>>58702589
If only anyone bothered to document the code, huh.
>>
>>58702595
yes, if only to meme on /g/
>>
>>58702595
Yes. Despite of everything they say over here about it being a 'meme language', it is used a lot in the industry. Also, since there are only very few Haskell programmers out there, if you become good at this, you're gonna have a real good time.
Oh, and you also don't have to compete with Pajeets.
>>
>>58702595
it will teach you a lot of transferable skills
>>
>>58702634
For example?
>>
>>58702656
FP, pure programming, FP and PLT concepts and ideas, lazy evaluation, strong typing
>>
>>58701075
That's the point.
>>
File: tumblr_nant6zUvgI1s60w99o1_1280.jpg (376KB, 960x1280px) Image search: [Google]
tumblr_nant6zUvgI1s60w99o1_1280.jpg
376KB, 960x1280px
does java always end up being a convoluted, illogical clusterfuck when you program in it, or is it just my CS prof?

All I want is an A -> B -> C relationship but what ends up happening is just fucking hideous.
>>
>>58702830
Welcome to Object Oriented Programming
>>
>>58702830
Yeah if you want relationship go to fucking tinder.
Programming is about abstract bullshit that you will never understand.
>>
>>58702830
learn a better language like C or Haskell
>>
>>58701310
>using C
>thinks goto is bad
get a load of this chucklefuck
>>
>>58701462
ANSI C can do this.
>>
>>58702937
I didn't say goto was bad. I said hidden gotos are bad.
Hidden gotos are a completely different beast.
That's why people give you shit if you put flow control inside macros.
>>
>>58702953
This is why you should use monads
>>
It's not a side effect if you intended it and document it.
>>
>>58702977
>it's not a disease if you intended it and document it
>>
What the fuck is lazy evaluation?
Is it where the program hangs for a while because it can't be bothered to continue?
>>
>>58702967
CL-USER> (ql:quickload 'cl-monad-macros)
To load "cl-monad-macros":
Load 1 ASDF system:
cl-monad-macros
; Loading "cl-monad-macros"

(CL-MONAD-MACROS)
CL-USER>

Okay, now what?
>>
File: 7drUhQ3.png (184KB, 724x724px) Image search: [Google]
7drUhQ3.png
184KB, 724x724px
Can someone explain to me what is so bad about Python? I realize it's not the best, but this place REALLY rags on it.
>>
>>58702992
Neutered functional programming
>>
>>58702990
It means that a program won't evaluate something until it absolutely needs to.
>>
>>58702991
>impure language
pls
>>
>Need to run someone elses python script
>Change the first line of the script from
#! /bin/python
to
#! /bin/python2
in order for it to work
>Even worse when the script calls other python scripts

Every fucking time.
What a joke language.
>>
>>58703009
>mad because his language isn't a unique snowflake
>>
>>58702992
Simply put, it's brain cancer.
There are a variety of flaws with Python - the type system (or lack thereof), the performance (or lack thereof), the closures (or lack thereof) - and when you learn python, you stop being able to acknowledge flaws.
It's like weed, it rots your brain until you think it's a harmless drug.
>>
>>58703008
Sounds useless, pointless, and stupid.
It all has to get executed in the end anyway, what possible performance gain could it bring?
>>
>>58702992
Tell me what the following code does:
class A:
def f(this, n):
return n * n

x = A()
x.f(2)
>>
>>58703025
Impure languages are a deal breaker
>>
>>58703038
It allows you to have things like infinite lists and actually be able to use them.
>>
>>58702992

python is kinda ok but nodejs is a 10 times better alternative.

>faster
>more packages, packages for literally everything
>better syntax with es6/7 additions
>fair autocomplete with jsdocs, typings and GOAT autocomplete with typescript.
>>
>>58703038
It's a very elegant solution when you transform some mathematical function definitions directly to a functional programming language. Without lazy evaluation, most of them would go into an infinite loop.
>>
>>58703041
Return 4?
>>
>>58703041
I can read js c and lua and I have no fucking idea what that says
>>
>>58703050
And what benefit does that bring?
>>
>>58703038
It's pretty trivial to implement laziness anyway.
>>
>>58703038
depends what you're doing

if you naively compose functions a lot it can help you, it also makes list functions a lot better
>>
>>58703034
>type system
>performance
>closures
>in scripting language
The worst part of it that Python is not considered as a scripting language, duh.
>>
>>58703056
That's what you thought. Unfortunately someone somewhere completely out of your control decided that running
x.f = lambda n: n * 10
was an excellent idea and now your object is fucked.
>>
>>58703044
I guess it's unfortunate for you no language is completely pure.
>>
>>58703025
>uniqueness types
Mercury can do that
>>
>>58703063
infinite data structures are pretty useful

>>58703069
>it's ok because >scripting language
brain >harmless
cancer >drug

static typing and closures should be in all scripting languages

>>58703078
haskell is pure
>>
>>58703085
Not completely. Otherwise it wouldn't do much, now would it?
>>
i want to make a website, where the user inputs something and the website/programm recognizes it. so pretty much a neural network. which language should i go for, python? im familiar with java
>>
>>58703038
Makes it easy to compose things in a way that covers many use cases of macros
e.g. you could implement cond or if as a function, without having the arguments be evaluated when you don't want them to
>>
>>58703095
>implying
haskell allows you to construct IO values which represent impure computations

the key difference is

x = getLine

does not get a line and put it in x
it sets x to be identical to getLine
>>
>>58703083
IIRC Idris can as well.
>>
>>58703098
Like
&&
and || in C? Good thing it has lazy evaluation, right?
>>
File: 1485666747185.jpg (88KB, 601x643px) Image search: [Google]
1485666747185.jpg
88KB, 601x643px
I'm making a web project in Java and at the end will have a WAR file with everything, but my application connects to the database. I made the DB on the local computer with msql workbench and can connect to it with JDBC on my computer with the mysql server installed.

What do I do to connect to the database on any computer when I deploy my application? What files should I ship with the .war file?
>>
>>58703113
It's like if any of your functions could be like && and ||. Yes, the arguments of && and || are lazily evaluated.
>>
>>58703106
CL-USER> (defvar *x* #'read-line)
*X*

So hard.
>>
>>58701562
Figure out Hibernate and learn SQL, I guess.
>>
>>58703137
And what exactly is #' ?
It doesn't look like you set one equal to the other.
It looks like you defined a macro.
It doesn't look like it would be impossible for you to literally call getLine and get a value out.
>>
File: monty_hall.png (147KB, 1452x899px) Image search: [Google]
monty_hall.png
147KB, 1452x899px
I got bored.
>>
>>58703160
I still think this is bullshit
>>
I need to describe some of my functions and variables in the comments for a user to understand how to use them. What is the best way to do it?
Something like this
int printf ( string $format [, mixed $args [, mixed $... ]] )
from http://php.net/manual/en/function.printf.php.

What is that description syntax called? Is it some kind of universal standardized thing or everyone is allowed to define their own form? I just want to stay consistent and follow some kind of rules while describing.
>>
>>58703085
>it's ok because
>implying it's not
Why do I need closures when I most possibly won't run this code again?
>>
>>58702830

You can write clean and good looking code in Java. However, if you're incapable of writing clean and good looking code, you can still hack it together to work in Java.

Therefore retards will skip learning how to write good code in Java, and claim that they're focusing on "getting things done".
>>
>>58703166

By all means, feel free to show a reason why sticking might be a better strategy, or an equally valid strategy.
>>
>>58703148
#' is an abbreviation for the function operator, which when applied to a particular function name, returns the definition of said function.
>>
>>58703174
Maybe because higher order functions are the basis of functional (aka decent) programming?

Imagine telling a C programmer they can never use function pointers again
>>
>>58703119
You know the connection string, the driver class you're loading, username, password etc?

Put those in a properties file.
Have your program take a command line argument that points to that file.

Now you can tell the program how to connect to the database on startup.

See
> https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html

for more details.
>>
>>58703186
and you can't get a value out of getLine without staying in some kind of io monad?
>>
>>58703172
can someone please give some kind of tips and hints?
>>
>>58703034
>>58703085
But Python does have closures.
>>
>>58703205
But I already have the database with tables filled with information. I need whoever deployed my application on a local computer to access already existing data and I don't know what database files I should put and where I should put them.
>>
>>58703217
Hmm? I never said that.
>>
>>58703265
I did
>>
>>58703269
Okay? lol
>>
>>58703275
kind of defeats your argument then doesn't it
>>
>>58703284
Uh, no.
>>
>>58703265
>>58703269
>>58703275
>>58703284
>>58703289
cancer,get
>>
>>58703289
data Console a where
getLine :: Console String
writeLine :: String -> Console ()
Bind :: Console a -> (a -> Console b) -> Console b
Pure :: a -> Console a

in this example, getLine isn't a function
>>
>>58703311
Okay. And the code to define getLine will be made up of one or more functions. So?

Consider the implementation in GHC.
getLine         :: IO String
getLine = hGetLine stdin

hGetLine :: Handle -> IO String
hGetLine h =
wantReadableHandle_ "hGetLine" h $ \ handle_ -> do
hGetLineBuffered handle_

//omitting definitions from here on
wantReadableHandle_ :: String -> Handle -> (Handle__ -> IO a) -> IO a

hGetLineBuffered :: Handle__ -> IO String

I don't know what point you're trying to make honestly.
>>
>>58703311
suppose it would have to be GetLine and WriteLine (capital)
>>
>>58703338
No, that is a definition.
I've defined a monad.
In this case, it's an AST represented with HOAS.


Now look at the things you've referenced
>hGetLine stdin
hGetLine is a function.
It's called and the result is an IO.

Not a function.

You've excused yourself by with-holding from calling it.
You can't "call" getLine in Haskell, not literally from the top level perspective.
>>
>>58703189
I know what functional programming is.
I ask why do I need FP in >scriping language?
>C
C ain't scripting language.
>>
>>58703352
And? You're gonna have to define instances at some point. And you'll need functions to do it. Either way, I'm not sure what you're arguing about.
>>
I'm working on my php7 framework.
I got the modules to talk to each other finally.
>>
>>58703368
What do you mean instances? Type class instances? You wouldn't need them, that's just for do notation syntax. Even then, using rebindable syntax you can just do (>>=) = Bind.

In Haskell, it's just an AST.
You return an AST, built up an AST, etc.
>>
guys what does

(some Class) obj;

mean in java?
>>
>>58703417
it means you should switch to a non-shit language
>>
What makes immutable objects faster? I've read and heard this a lot before and can't seem to understand why they are making those claims.
>>
>>58703417
it means you've taken the wrong class and should object to being taught java
>>
>>58703423

i dont know but im sure it has something to do with how much memory is allocated
>>
>>58703417
Casts the instance of obj into (some Class).
>>
File: 1468529683428.jpg (64KB, 582x582px) Image search: [Google]
1468529683428.jpg
64KB, 582x582px
>>58703053
>JavaScript
>better syntax
>>
>>58703423
it depends, manual memory can make for much faster code, but there are some things

1) no race conditions in immutable code
2) immutable objects can be GCed better because they never point to newer data
3)
if you have a list, e.g.
[1,3, ...xs... ]
if you want to make a new list with the same tail (xs) but a different head, then you can just set the pointer of the new object to it
new = 5 : 6 : xs

you know xs won't be changed if it's immutable
>>
>>58703436

thanks
>>
>>58703417
Casts obj to some Class, allowing you to use methods from that class. It'll throw a ClassCastException if obj is not a instance of some Class

Object o = new String("test");
String s = (String) o;

o.charAt(6); //not allowed, Object doesn't have charAt method
s.charAt(5); //allowed
>>
File: blink.gif (2MB, 300x300px) Image search: [Google]
blink.gif
2MB, 300x300px
weaponized autism epilepsy trigger
>>
so how do you make a 2D array of integers while only using one malloc statement in C?

I can't seem to figure it out, only figured it out using two mallocs.
>>
>>58703489
malloc(width * height * elem size)
>>
What open source projects are you guys working on?
>>
Implemented kmap in my kernel
>>
>>58703486

makes perfect sense now. ty.
>>
Working on a gonewild ripper. Give it a reddit account and it pulls down all their nsfw posts to imgur, gfycat, eroshare, and reddit's image host

So far I have imgur and gfycat working.
>>
>>58703500
https://www.gnu.org/philosophy/open-source-misses-the-point.en.html
>>
>>58703500
just some anime
>>
>>58703176
Not with my current assignment, the parameters require classes to be all tangled and fucked
>>
File: 1454531188516.jpg (214KB, 600x620px) Image search: [Google]
1454531188516.jpg
214KB, 600x620px
>>58703514
>"""""philosophy"""""
>>
>>58703514
>https://www.gnu.org/philosophy/open-source-misses-the-point.en.html
I literally meant open source. Fuck freedom.
>>
>>58702830
>A->B->C relationship
nice try cuckoldry advocating jew
>>
>>58701350
>unsafePerformIO
I don't think anyone is going to defend that.
>>
File: VID_20170129_123054501.webm (1MB, 1920x1080px) Image search: [Google]
VID_20170129_123054501.webm
1MB, 1920x1080px
kind of werks (except of the fourth digit, which seems to be ded)
now just gotta multiplex that shit like a motherfucker

captcha: cuckoos nigger
>>
>>58703489
Using VLAs, you can get a nice way to allocate multi dimension arrays:
#include <stdio.h>
#include <stdlib.h>

int fn(int w, int h)
{
int (*arr)[w] = malloc(sizeof arr[0] * h);

for (int x = 0; x < w; ++x)
for (int y = 0; y < h; ++y)
arr[x][y] = rand() % 20;

for (int y = 0; y < h; ++y) {
for (int x = 0; x < w; ++x)
printf("%2d ", arr[x][y]);

putchar('\n');
}

free(arr);
}

int main()
{
fn(3, 5);
}

However, C's type system doesn't allow you to return these pointers back from functions.
If you need to do that, just do what >>58703492 says.
>>
>>58703784
>C's type system doesn't allow you to return these pointers back from functions
Actually, to correct myself:
You CAN return them back from functions, but you'll lose type information.
>>
Why the fuck does a function in haskell which returns the gcd of two integers have the type
Int->(Int->Int)
How the fuck does that make any sense.
Shouldn't it be (Int,Int)->Int
Holy shit what a retarded language
>>
>>58703800
https://en.wikipedia.org/wiki/Curry
>>
>>58703805
Wat
>>
>>58703800
Trolling?
>>
>>58703833
I was just making a really stupid joke.
Here is the actual explanation: https://wiki.haskell.org/Currying
>>
>>58701678

Higher Kinded Types.
>>
>>58703846
Pls resbond
>>
>>58703492
>>58703784
did this and holy fuggg it worked ebin :--D thanks guys !

int *create2DArray( int rows, int cols )
{
int *array = malloc(sizeof(int) * rows * cols );

return array;
}


and i wanted to make a 2d array of strings would it be similar? (3d array of chars?)
>>
>>58703889
>2d array of strings would it be similar?
Yes.
>>
>>58703889
>i wanted to make a 2d array of strings would it be similar?
Doing it that way means all of the space for the strings must be the same size.
It will work, but it may lead to a lot of wasted space.
>>
>>58703841
No

>>58703845
Oh thanks. That's very counter-intuitive.
>>
>>58703800
there are only two options here, and in both of them you are the retarded one.
1) you picked a shitty book which doesn't even teach you basic concepts like currying (though i'm not sure how that's even possible)
2) you are just plain retarded
>>
>>58703919
Try doing this with any two numbers in ghci
:t gcd
:t gcd x
:t gcd x y
>>
is there any UI toolkit that uses a GUI made with another GUI toolkit?
>>
I have decided to further generalize the Monty Hall problem in F# with an arbitrary number of doors, an arbitrary number of cars, and an arbitrary number of doors revealed.
>>
File: Triggered.jpg (44KB, 720x599px) Image search: [Google]
Triggered.jpg
44KB, 720x599px
>>58701003
>>
>>58703969
Do you mean something like wxWidgets or something?
>>
>>58698904

What component is that, the black block with red top sections, bottom-left of the breadboard?
>>
>>58703969
libui
>>
>>58703224
> can someone please give some kind of tips and hints?
abandon this shitty php, and learn proper technology stack
>>
excuse me

I started learning Java after Python
why is this a thing?

int number = Integer.parseInt(reader.nextLine());
>>
>>58704157
because

POO

IN

LOO
>>
>>58704157
what do you mean? i assume it's just supposed to convert the next line from a bufferedreader to an integer (don't know java)
>>
>>58703257
Let's say you have a database called 'mydb' at the IP 2a00:1450:4005:801::2003, at port 4567 (PostgreSQL).

Since we're assuming postgres, the docs are here:
> https://jdbc.postgresql.org/documentation/80/load.html
> https://jdbc.postgresql.org/documentation/80/connect.html

The generic connection URL would be:
> jdbc:postgresql://host:port/database

Your connection URL would be:
> jdbc:postgresql://[2a00:1450:4005:801::2003]:4567/mydb?user=dbusernamehere&password=passwordhere

And the drivername would be
> org.postgresql.Driver
for PostgreSQL.

So you could put the following in your sql.properties:

> driver=org.postgresql.Driver
>connection.url=jdbc:postgresql://[2a00:1450:4005:801::2003]:4567/mydb

and then your program could load that information.
>>
Jesus christ, currying is fucking retarded. Who thought that was a good fucking idea at all?
Haskell fags are fucking retarded.
>>
>>58704157
Looks perfectly okay to me.
What were you expecting?
>>
>>58703879
Have you ever visited a math lesson? Heard of remainders?
#include <stdio.h>

int main(void)
{

int amount, twenties, tens, fives, ones, left;

printf("Enter the amount : ");
scanf("%d", &amount);

twenties = amount / 20;
left -= (left % 20); // easy to make a function out of this line
tens = left / 10;
left -= (left % 10);
fives = left / 5;
ones -= (left % 5);

printf("$20 bills: %d\n", twenties);
printf("$10 bills: %d\n", tens);
printf("$5 bills: %d\n", fives);
printf("$ bills: %d\n", ones);

return 0;
}
>>
>>58704203
That is awful.
See my solution in >>58703893
>>
>>58703257
Now, as to how to connect using that information, this bit of code lets you get connections to whatever db is specified in a file.
It's quite easy to use.

You just create it like so:

// A bit wordy, but it's pretty fucking obvious what's going on. And that's actually much more important when it comes to these things,
// since they only fail at 0357 on your day off.
File propertyFile = new File("path/to/property/file/sql.properties");
RDBMSConnectionFactory connFactory = RDBMSConnectionFactory.fromFile(propertyFile);


And now you can easily get a connection to the database using
connFactory.getConnection();


The class itself would look something like this (Exceptionhandling doesn't really happen here though.)
import java.io.FileInputStream;

public class RDBMSConnectionFactory {
private final String connectionUrl;

// Let's not have 3 different constructors. Let's instead have 3 factory methods.
private RDBMSConnectionFactory(String className, String connectionUrl) throws Exception {
this.connectionUrl = connectionUrl;
Class.forname(className);
}

// I'm not going to bother with exception handling for a small demo on 4chan.
public static RDBMSConnectionFactory.fromStrings(String className, String connectionUrl) throws Exception {
return new RDBMSConnectionFactory(className, connectionUrl);
}
public static RDBMSConnectionFactory.fromProperties(Properties props) throws Exception {
fromStrings(props.getProperty("driver"), props.getProperty("connection.url"));
}
public static RDBMSConnectionFactory.fromFile(File f) throws Exception {
Properties props = new Properties();
try(FileInputStream fis = new FileInputStream(f)) { // Note that this assumes that your file is in ISO 8859-1, with unicode escapes for other symbols.
props.load(fis);
}
return fromProperties(props);
}

public Connection getConnection() {
return DriverManager.getConnection(url);
}
>>
Need python help, why isn't this working I've literally cd'd into the directory using the exact same path and it worked

def make():
print("Input the note you'd like to add")
wri = input(">>> ")
with open("~/Documents/code/Homepage/notes" + ".txt", "a") as text_file:
text_file.write(wri + "</br>" + '\n')


>>
>>58703534
Professors seldom write good code.

I've seen an ID3 three implementation in Java that had, and I shit you not:

method(int[] argument) {
argument[0] = something();
}

Because the fucker who wrote this evidently only knew how to program using pointers and stateful change.

It was actually faster to write my own ID3 implementation than to actually figure out what the other one did.
>>
>>58704227
also the error message
Traceback (most recent call last):
File "./notes.py", line 17, in <module>
start();
File "./notes.py", line 7, in start
make()
File "./notes.py", line 14, in make
with open("~/Documents/code/Homepage/notes" + ".txt") as text_file:
FileNotFoundError: [Errno 2] No such file or directory: '~/Documents/code/Homepage/notes.txt'
>>
How many types is too many for an enum?
>>
>>58704227
>>58704235
>~
It's your shell which interprets that and expands it to your home directory.
Python (or any programming language, really) isn't going to do that.
Either write the full path, or load the HOME environment variable to get it.
>>
>>58704157
Because:
reader.nextLine() reads a line from wherever. (Might be a file, might be a socket, or System.in, or a String, if you're unit testing.)

Then you tell the Integer class to parse the string as an integer, so you get a number from the string.

This is perfectly understandable. What the hell did you expect? gibsInt()?
>>
>every page I found on the Presentation Model design pattern is outdated, it doesn't even have a wikipedia page
Is it ever actually used?
>>
>>58704247
thanks
>>
>>58702287
Almost all major scheme implementations are interpreters, not compilers. MIT-scheme included.
>>
>>58704243
According to the C standard, 1024 enumeration constants for a single enumeration is too many.
>>
>>58704267
Aren't they just integers in C#? So you should be able to have a few more there.
In Java, I would guess the limit would be something like 65535 or so, depending on how much extra information you need to store in them.
>>
>>58704280
>Aren't they just integers in C#?
I don't fucking know. I mentioned C.
I was just reading off of the translation limits in the C standard, which is the minimum amount that a conforming compiler must support.
Also, I was talking about the number of enumeration constants, not the value of the constants itself.
>>
If anyone's into cryptography, here's a challenge: find out whatever the fuck this guy's videos are trying to communicate

https://www.youtube.com/channel/UCqUClrbgQpAXj4sXaoZTDXw
>>
>>58704291
I was merely comparing C to other languages.
If an enum is merely an integer, it makes no sense to talk about other information that enum has.
>>
>>58704321
I'm pretty sure the first video is supposed to be an anime song or something? It's from an anime OP I guess
>>
>>58704157
reader is like an iterator, because you don't care about line numbers or indices, you just want the next available line.

parseInt() is a static method of the Integer class, so you need to be specific about where it comes from (java is pretty fucking verbose in general, having shit namespaces is no surprise).

Also, you're missing a try-catch wrapper, parseInt() can throw.
>>
>>58704321

he's looking for some mad pussy
>>
why didn't haskell designers consider tuple unpacking a la python 2 instead of currying?
>>
>>58704522
How does one do partial application with that?
>>
>>58702073
Just run it through two regexes.

And please stop posting this.
>>
>>58704552
good point. was only trying to figure out why the anon above
>>58704185
had such a problem with currying, and besides I just tried it and it works anyway:
~ $ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
Prelude> add (x, y) = x + y
Prelude> add (1, 1)
2
>>
>>58702261
Those are some ancient memes.
>>
>>58702261
Redis, tmux, suckless, musl, OpenBSD
>>
>>58704577
Now try do this with your tuple add function:
Prelude> add x y = x + y
Prelude> map (add 10) [1..10]
[11,12,13,14,15,16,17,18,19,20]
>>
>>58703038
>It all has to get executed in the end anyway
Not necessarily.
>>
>>58704185
>Jesus christ, functions are fucking retarded. Who thought that was a good fucking idea at all?
>>
>>58702992
Nothing, it's excellent at what it does (dynamically typed very high level language, high productivity with low performance).

/dpt/ used to collectively jizz itself over Python, what you're seeing at the moment is just the currently trending opinion.
>>
ever programmed in two completely different languages simultaneously on 2 screens?
>>
>>58704660
that's how i usually do it
also i have some anime up on another screen
>>
>>58703041
Fail because you are calling f with one argument , self is not used as the first argument, and finally you are doing nothing with the result.
>>
>>58704673
Doesn't anime distract you?
>>
>>58704660
Sure - optimising assembly-routines compiled from C.

Running tests on architecture made in VHDL.

Interacting with a JS frontend - while developing backend.

Happens a lot! I try to tell beginners not to put so much emphasis on languages - the same principles often apply no matter the language.

        function lumberAI(xCord, yCord){
for(i=1;i<dimension;i++){
var maxX = (xCord+i>dimension-1) ? dimension-1:xCord+i;
var maxY = (yCord+i>dimension-1) ? dimension-1:yCord+i;
var minX = (xCord-i<0) ? 0:xCord-i;
var minY = (yCord-i<0) ? 0:yCord-i;
var treeLocations = [];

for(;minY-1<maxY;minY++){
for(innerX = minX;innerX-1<maxX;innerX++){
if(map[minY][innerX].type=="T"){
treeLocations.push({x:innerX, y:minY});
}
}
}

if(treeLocations.length!=0){
var location = treeLocations[Math.floor(Math.random()*(treeLocations.length))];
if(location.x!=xCord){
newX = (location.x>xCord) ? newX = xCord+1:newX = xCord-1;
}else{
newX = xCord;
}
if(location.y!=yCord){
newY = (location.y>yCord) ? newY = yCord+1:newY = yCord-1;
}else{
newY = yCord;
}
return {x:newX, y:newY};
}
}
}
>>
>>58704704
Why would it? If anything it's programming that distracts me
>>
New thread:

>>58704707
>>58704707
>>58704707
>>
>>58704711
Why are you even here
>>
>>58704522
Tuple unpacking is just a limited form of pattern matching, which Haskell has.
>>
>>58704723
What kind of question is this?
>>
File: 1480711057957.gif (2MB, 179x320px) Image search: [Google]
1480711057957.gif
2MB, 179x320px
>>58704618
add (x, y) = x + y
map (curry add 10) [1..10]
>>
>>58704736
>If anything it's programming that distracts me
>in programming thread
>>
>>58704660
Everyone who has had a codebase open in one window and a shell open in another has done this.
>>
>>58704760
So? i fail to see the issue here.
>>
>>58704788
just here for the ambiance?
>>
>>58704798
How do you get that from what I said?
>>
>>58704660
Holy fuck MIND=BLOWN
>>
>>58704321
my guess homemade radio station, titles are hashes of words to find the video, sounds get interpreted by custom made software - probably just two nerds having a little fun
t. guy who ran a numbers station in HS
>>
What is Salesforce for? What is it's main goal? Why are many people using it? What can I do with it?
I've been offered a junior role as a salesforce developer and they are willing to train me. I just have no idea what I'm in for if ever.
>>
I have a pointer to a counter that must be deallocated when it reaches 100. Multiple threads use this pointer. The problem is that the threads can't know in advance if the counter has been set to 100 before they dereference it, so just deleting it when it is 100 would be wrong. What do?
>>
I have been hit by the flu.
What can I read until I recover?
>>
>>58704183
Thank you, but that's not what I was asking.

I know how to connect to the database with the appropriate driver. What I don't know is what database files with already existing tables I need to copy to the machine I want to deploy the application on.

There are a bunch of ibd and frm files in program data, should I copy them?

Should I make a dump of the database using MySQL Workbench? But the dump is just SQL scripts to create the tables.

Should I simply create the tables when the application is deployed on another computer?
>>
>>58705577
When I had the flu I locked myself in my room, took a load of codeine and played SM64 until I was better.
>>
>>58705195
>What is Salesforce for?
DESIGNATED
Thread posts: 330
Thread images: 28


[Boards: 3 / a / aco / adv / an / asp / b / bant / biz / c / can / cgl / ck / cm / co / cock / d / diy / e / fa / fap / fit / fitlit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mlpol / mo / mtv / mu / n / news / o / out / outsoc / p / po / pol / qa / qst / r / r9k / s / s4s / sci / soc / sp / spa / t / tg / toy / trash / trv / tv / u / v / vg / vint / vip / vp / vr / w / wg / wsg / wsr / x / y] [Search | Top | Home]

I'm aware that Imgur.com will stop allowing adult images since 15th of May. I'm taking actions to backup as much data as possible.
Read more on this topic here - https://archived.moe/talk/thread/1694/


If you need a post removed click on it's [Report] button and follow the instruction.
DMCA Content Takedown via dmca.com
All images are hosted on imgur.com.
If you like this website please support us by donating with Bitcoins at 16mKtbZiwW52BLkibtCr8jUg2KVUMTxVQ5
All trademarks and copyrights on this page are owned by their respective parties.
Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.
This is a 4chan archive - all of the content originated from that site.
This means that RandomArchive shows their content, archived.
If you need information for a Poster - contact them.