[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: 312
Thread images: 22

File: dpt.webm (1MB, 1280x720px) Image search: [Google]
dpt.webm
1MB, 1280x720px
What are you working on, /g/?

Previous Thread: >>57281637

Official Discord Channel: https://discord.gg/xcVHA2Y
>>
>>57284992

and honestly it's kind of sad the way you can't really do this in impure languages without macros or some unnecessary nonsense

look at Haskell's
Control.Monad
for instance

>repeat an action N times
library function

>repeat an action forever
library function

>sequence a list of actions into 1 action
library function

>for loop
library function
>>
daily tip: coding isn't the same as programming
>>
>>57285039
and these work for arbitrary monads or applicatives
so they aren't necessary IO actions, they could be user defined actions
>>
>>57285024 asking again in new thread.
>>
>>57285042
what's init in haskell?
>>
>>57285063
>>>57285024 → asking again in new thread.
Err >> 57285042
>>
>>57285074
It drops the last element from a list.
>>
File: employed haskell programmer.png (1MB, 900x1162px) Image search: [Google]
employed haskell programmer.png
1MB, 900x1162px
>>
trying to crack the code for this site;

http://karriere.bonum.no/hackmeg.html
>>
>>57285078
oh? why is it called "init"?
>>
File: (You).png (403KB, 521x520px) Image search: [Google]
(You).png
403KB, 521x520px
>>57285090
>1.09 MB
>>
init [] = error "List must be non-empty"
init [_] = []
init (x : xs) = x : init xs

Simbly translate to F# :^)
>>
>>57285093
initial, i guess
>>
How is similar a haskell programer and a vegan?
>you don't need to ask them, they will yell to you their preferences
>also fags
>>
>>57285074
Great thanks!!
>>
>start shit
>lose
>bitch

the day in the life of an imperative programmer
>>
>>57285119
Well, that was almost English.
>>
>>57285014
>Discord
Kill yourself, you faggot
>>
>>57285159
pajeet detected
>>
>>57285106
let rec init x = function
| [] -> raise "List must be non-empty"
| [_] -> []
| x::xs -> x : init xs

or something.. I'm a bit rusty..
>>
>>57285178
let rec init = function

-> x :: init xs
>>
>>57285198
>>57285178
>>>57285106
>let rec init x = function
> | [] -> raise "List must be non-empty"
> | [_] -> []
> | x::xs -> x : init xs
>or something.. I'm a bit rusty..
That pretty much is what I got
>>
>>57285106
>2016
>calling error
>>
>>57285226
yeah, i'm saying drop the x parameter (function creates a lambda and pattern matches on the value), and the :: should go in the init bit too
>>
>>57285257
I got that ;^)
>>
>>57285244
init [] = fail "List must be non-empty"
init [_] = return []
init (x : xs) = (x :) <$> init xs
>>
>>57285178
I much prefer F#s/OCamls way of coding this stuff over haskells. >>57285106

Haskell looks like you have 3 seperate method definitions beside each other. In F# it's clear you have one, and you are specifying exactly how it must behave when each kind value is passed to it.
>>
>>57285269
I hate that fail method so much.
>>
>>57285280
kill yourself
if you hate haskell you hate /g/
>>
>>57285318
I don't hate haskell. I just love F# more.
>>
>>57285280
init = \case
[] ->
[_] ->
x:xs ->


But anyway, you give partial definitions for the function. I like it.

>>57285286
Should init really fail for empty lists, rather than just return an empty list?
>>
File: fsharp code quotation.png (3KB, 278x41px) Image search: [Google]
fsharp code quotation.png
3KB, 278x41px
>>57285325
Literally why
>>
>>57285280
>method
Also, it comes from reduction rules and it's a lot more concise most of the time. When it isn't, you can do as >>57285326 shows.
>>
>>57285345
Why what?
>>
>>57285326
>Should init really fail for empty lists, rather than just return an empty list?
No, it should return a Nothing.
>>
>>57285375
Why would you prefer it?

Are you just addicted to .NET or something?
>>
File: hott-girl.jpg (128KB, 1000x759px) Image search: [Google]
hott-girl.jpg
128KB, 1000x759px
>>57285106
In Coq this is just
Definition init {A n} (v : Vector A (S n)) : Vector A n.
Proof.
induction n.
- refine [].
- inversion v.
refine (h :: _).
refine (IHn X).
Defined.
>>
>>57285390
fail DOES return a Nothing


if you execute it in the maybe monad
>>
Is automatically scraping LinkedIn profiles legal?

I read some time ago that it's planning on suing scrapers. Would that be a legit case or is it typical M$ butthurt?
>>
>>57285411
>monad
A what?
>>
so what am i supposed to use instead of using namespace std? its std::???? ?

then what do i need to change in my code? whats actually in std that i need to """call"""
>>
>>57285390
Which is what fail does when you want a Maybe.
>>
>>57285418
https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad-Fail.html
>>
>>57285396
Pretty much. .NET is savage.

Also not a big fan about how Haskell breaks your balls over mutation and shit. I know you can do it with mind bending bullshit, but sometimes it's just simpler to mutate something when that's what's going get you the best, fastest, safest, most maintainable code for the least pain.
>>
>>57285442
That doesn't help me understand what the fuck a monad is.
>>
Any way else to do a 2d sliding window? (i'm really liking F# so far)
 
let rec transpose2 = function
| (_::_) :: _ as M -> List.map List.head M :: transpose2 (List.map List.tail M)
| _ -> []

let windowed2 n arr =
let slice arr = arr |> List.map (List.windowed n) |> transpose2
arr |> slice |> slice
>>
>>57285452
https://hackage.haskell.org/package/inline-java
>>
>>57285422
Google what a namespace is.
>>
>>57285456
What do you mean a 2d sliding window?
Like

1 2 3 4
2 3 4
3 4
4
?

or like

1 2 3
2 3 4
>>
>>57285422
everything in the standard library is in the
std[/std] namespace
http://en.cppreference.com/w/cpp/header
things like:
std::cout
std::vector
std::string
>>
>>57285410
In Prolog this is just
init([X], []).
init([X|Xs], [X|Ys]) :- init(Xs, Ys).
>>
>>57285455
A monad is just a notion of computation. It's also a monoid in the category of endofunctors, but that definition is only true in Hask, as not all monads need be endofunctors.
>>
>>57285488
well i fucked up. this is what i meant to post:

everything in the standard library is in the std namespace
http://en.cppreference.com/w/cpp/header
things like:
std::cout
std::vector
std::string
>>
>>57285477
 
val transpose2 : _arg1:'a list list -> 'a list list
val windowed2 : n:int -> arr:'a list list -> 'a list list list list

let t = List.chunkBySize 5 [1..25];;
val t : int list list =
[[1; 2; 3; 4; 5]; [6; 7; 8; 9; 10]; [11; 12; 13; 14; 15];
[16; 17; 18; 19; 20]; [21; 22; 23; 24; 25]]

windowed2 4 t;;
val it : int list list list list =
[[[[1; 2; 3; 4]; [6; 7; 8; 9]; [11; 12; 13; 14]; [16; 17; 18; 19]];
[[2; 3; 4; 5]; [7; 8; 9; 10]; [12; 13; 14; 15]; [17; 18; 19; 20]]];
[[[6; 7; 8; 9]; [11; 12; 13; 14]; [16; 17; 18; 19]; [21; 22; 23; 24]];
[[7; 8; 9; 10]; [12; 13; 14; 15]; [17; 18; 19; 20]; [22; 23; 24; 25]]]]
>>
>>57285425
I know. But it should always return a Nothing, not just when use it in a Maybe context.
The type signature shouldn't be mondaic just for fail and return.
that's retarded.
>>
>>57285516
Why? Having it be any monad is significantly more parametric than having it be only Maybe.
>>
>>57285477
so the latter.
>>
>>57285455
It's just a monoid in the category of endofunctors. what's the problem?
>>
>>57285512
import Data.List (tails)
window2 n = map (take n) . tails
>>
>>57285532
Because not all monads have total 'fail'. The type should really be something like 'MonadError m => [a] -> m [a]' or whatever the mtl class is.
>>
>>57285507
>>57285541
Sounds like made-up bullshit.

Might as well tell me it's like a burrito.
>>
>>57285581
oh shit. thanks!
>>
>>57285039
Macros are the superior way to do all those things.
>>
>>57285516
>>57285532
Actually, maybe I have misunderstood just how bad "fail" is. I assumed that with the new MonadFail stuff it would be something like:
class Monad m => MonadFail e m where
fail :: e -> m a

instance MonadFail e Maybe where
fail _ = Nothing

instance MonadFail e (Either e) where
fail = Left


>>57285582
Yeah, I should have used that instead. I'm somewhat out of practice in Haskell.
>>
>>57285539
the latter just zips each item with the next element
zip <*> tail

>>57285582
It's been moved
>>
>>57285581
is that clojure?
>>
>>57285590
The idea of a monad is, strictly speaking, made up bullshit. But it's somehow a common API for a lot of useful things.
>>
File: ss (2016-10-28 at 11.29.40).png (107KB, 705x662px) Image search: [Google]
ss (2016-10-28 at 11.29.40).png
107KB, 705x662px
>>57285590
It's hard to tell what level of explain you want given that you told us completely nothing on waht you know.

>>57285608
Good, fail was a mistake.
>>
>>57285612
no
>>
>>57285581 looks more like a 1d sliding window. I was talking about 2 dimensions.
>>
File: ss (2016-10-28 at 11.34.18).png (140KB, 805x691px) Image search: [Google]
ss (2016-10-28 at 11.34.18).png
140KB, 805x691px
>>57285590
>>57285617
>>
>>57285461
This package causes me to throw up and have an erection at the same time.
>>
>>57285721
>march 2028
>haskell masterrace forces all other languages into hackage package camps
>>
>>57285692
Post the full paper please.
>>
>>57285763
that would require unsafeUnwarpBurrito
>>
>>57285763
http://emorehouse.web.wesleyan.edu/silliness/burrito_monads.pdf
>>
>>57285799
> if you can eat a carrot and you can eat a potato, then you can eat a carrot and a potato

not true
>>
File: 1476902123293.jpg (182KB, 1050x700px) Image search: [Google]
1476902123293.jpg
182KB, 1050x700px
>>57285410
i <3 redheads
>>
>>57285799
Thanks
>>
Would anyone mind looking at the code of a basic C program a beginner wrote in about 15 minutes to help squash a bug. It's one of those things that makes me feel like I'm misunderstand the way a switch function operates.
    int EndFlagLion=0;
char EndFlagMermaid;
do {
printf("Would you like to add another number?\n");
printf("Yes or No?\n");
printf("Y-Yes\n");
printf("N-No\n");
scanf("%c",&EndFlagMermaid);
switch(EndFlagMermaid)
{
case 'Y':
break;
case 'N':
EndFlagLion++;
break;
default:
printf("I'm sorry, I don't understand that command\n");
break;
}
}


What's happening is that it's printing my content twice before taking an input, like it skips the scanf the first time through so that part comes out looking like this.
Would you like to add another number?
Yes or No?
Y-Yes
N-No
Sorry I don't understand that command
Would you like to add another number?
Yes or No?
Y-Yes
N-No

It then works as intended and the scanf activates, loops the way its supposed to except everytime it returns to the beginning it prints this whole section twice.
>>
>>57286093

if you know if statement syntax just use that
>>
>>57286093
I don't think it's got to do with your switch statement but rather with your scanf. Your switch seems fine.
>>
Why isn't there a white-space-sensitive LISP?

(defn fizzbuzz [start finish] 
(map (fn [n]
(cond
(zero? (mod n 15)) "FizzBuzz"
(zero? (mod n 3)) "Fizz"
(zero? (mod n 5)) "Buzz"
:else n))
(range start finish)))

(fizzbuzz 1 100)


vs.

defn fizzbuzz [start finish]
map
fn [n]
cond
(zero? (mod n 15)) "FizzBuzz"
(zero? (mod n 15)) "Fizz"
(zero? (mod n 15)) "Buzz"
:else n
range start finish

fizzbuzz 1 100
>>
what can you even do with haskell besides muh algorithms
>>
>>57286243
>what can you even program in haskell besides >muh programs
>>
>>57286093

Try adding getchar(); right at the end of scanf();.
>>
with schemes define-syntax
how would I do something like
(my-macro
(x
(y 2)
(z 3)
(w
(y 4)
(z 5))))
expand into this
(fn xy 2)
(fn xz 3)
(fn xwy 4)
(fn xwz 5)
>>
>>57286182
Why the fuck would you want white space sensitive anything?
Are you a python retard?
>>
What if I free something I didn't malloc in c++
>>
http://programming.witheve.com

reminder that programming was changed forever today
>>
>>57286321
Less error-prone due to misplaced brackets
>>
does anyone use python here? I can't for the love of god understand why I can't read a website with the word HDTV and I read everything else, here's the script, it's very fucking simple

import re
import sys
import requests
from bs4 import BeautifulSoup

filenamepath = str(sys.argv[1])
path = str(re.findall('(.*\\\\).*\.', filenamepath, re.IGNORECASE)).replace("['","").replace("']","").replace("."," ")
filename = str(re.findall('.*\\\\(.*)\.', filenamepath, re.IGNORECASE)).replace("['","").replace("']","")
name_of_show = str(re.findall('.*\\\\(.*)s\d{2}e\d{2}', filenamepath, re.IGNORECASE)).replace("['","").replace("']","").replace("."," ")
name_of_show = re.sub(r'\d{4} ','', name_of_show)
season_and_episode = str(re.findall('.*\\\\.*(s\d{2}e\d{2})', filenamepath, re.IGNORECASE)).replace("['","").replace("']","").replace("."," ")
name_of_movie = str(re.findall('.*\\\\(.*)\d{4}', filenamepath, re.IGNORECASE)).replace("['","").replace("']","").replace("."," ")
year_of_movie = str(re.findall('.*\\\\.*(\d{4})', filenamepath, re.IGNORECASE)).replace("['","").replace("']","").replace("."," ")
resolution = str(re.findall('(720p|1080p|1280x720)', filenamepath, re.IGNORECASE)).replace("['","").replace("']","")
version = str(re.findall('.*[-| ].*-(.*)\.', filenamepath, re.IGNORECASE)).replace("['","").replace("']","")
source = str(re.findall('(hdtv)', filenamepath, re.IGNORECASE)).replace("['","").replace("']","")
busqueda = str(name_of_show+season_and_episode).replace(" ","+")

url = "http://www.subdivx.com/index.php?accion=5&masdesc=&buscar={}&oxfecha=2".format(busqueda)
r = requests.get(url)

#soup = BeautifulSoup(r.content)
print (r.content)


I thought it was urllib being shit so I tried requests but both give me a source code without the fucking word HDTV. aNY IDEA WHY?
>>
>>57286367
It's undefined behaviour, and will more than likely lead to a crash.
Also, why are you writing C++ the same way you write C?
>>
>>57286380
We've tried this shit a hundred times before, It's shit and nobody will use it.
>>
File: JUST frog.jpg (44KB, 374x363px) Image search: [Google]
JUST frog.jpg
44KB, 374x363px
Which license type libraries are safest to use for releasing closed source commercial products?

I don't want to suck RMS' cockmeat sandwich in the pokey.
>>
>>57286380
>>57286420
Wait, holy shit this is literally just a rebranded LightTable. Hahahaha.
>>
>>57286434
>for releasing closed source commercial products?
heh
>>
>>57286394
>I can't read a website with the word HDTV
i don't know what you mean by this. try to get it down to a minimal example. my feeling is that almost all of the lines here are unrelated to your problem
>>
>>57286093
Think about what do you when you input something.
You hit 'Y' and enter, i.e two characters.
>>
>>57286434
Kill yourself, you dumb frogposter.
>>
N I M
I
M

Does anyone here use this gorgeous language?
>C and JS backends
>Concise syntax
>Expressive type system
Is there anything better?
>>
>>57286367
Please don't free, every time USA tries to free something there appear Al-Qaeda and ISIS
I hope you don't want your computer to proclaim jihad against infidel programs
>>
>>57285014
>What are you working on, /g/?
I'm planning on writting a C++ program without making a class out of every single thing.
>>
>>57286490
No, it's a meme, it hasn't been shilled in months because it's that dumb
>>
>>57286367
UB
>>57286491
If USA doesn't free it, Russia will invade it. So, you have to either free it, or let UN RAII forces do it for you.
>>
>>57286463
you are right, I will paste the code with the essentials
import requests
from bs4 import BeautifulSoup

url = "http://www.subdivx.com/index.php?accion=5&masdesc=&buscar=ash+vs+evil+dead+s02e02&oxfecha=2"
r = requests.get(url)
print (r.content)


done, look, if you run those lines you will get a source code of that site, and if you visit the site with your browser you will see the word HDTV in the comments but not in the source code generated by requests. The same happens with urllib2

try it and you will see what I'm talking about. You need to install requests and beautifulsoup4
>>
File: kys.jpg (37KB, 600x600px) Image search: [Google]
kys.jpg
37KB, 600x600px
>>57286459
>>57286479

Is this general infested with GNU-males or what?

How are you gonna make money programming if you don't sell your product?
>>
>>57286507
Okay, then what real language should I pick if I want easy integration with JS and C(or LLVM)? What are my options?
>>
>>57286525
>easy integration with JS and C
What the hell kind of requirement is that?
>>
>>57286525
Haskell

>llvm backend
>inline-c
>ghcjs
>>
>>57286516
>>57286463
installing beautiful soup has a weird name when you install it i don't remember it, but look into it in detail
>>
>>57286553
what do you mean, you can't install it?

just pip install BeautifulSoup4
>>
>>57286516
i see four entries. i click on the the comments and it's people saying "gracias"; no "hdtv". am i missing something?
>>
>>57286579
see, the first subtitle has this comment

El que yo misma traduje, sincronicé, español latino, EXCLUSIVAMENTE para "Ash vs Evil Dead S02E02 INTERNAL 720p HDTV x264-KILLERS" y Ash vs Evil Dead S02E02 PROPER HDTV x264-KILLERS. Otra sincronía =


but when you read the link with python, the word HDTV disappears
>>
>>57286540
It's not a "requirement", I just want a silver bullet that will be portable across everything. And please forget that JVM exist.
>>57286549
>Lazy
I've already seen "laziness leaks" in Haskell. I don't want to see them again, so I'll wait for the "next Haskell".
And ghcjs is a joke, no real project will push Haskell runtime into the web.
>>
>>57286567
im not the guy you responded to previously

i just have a vague memory that installing bs4 had to be done with a weird name

or was it selenium

could be wrong
>>
File: mexicaninternet.png (35KB, 747x95px) Image search: [Google]
mexicaninternet.png
35KB, 747x95px
>>57286597
here's what i see
they must be doing something weird
>>
>>57286604
>integration with JS and C
>I just want a silver bullet that will be portable across everything
What do theses have to do with each other?
>>
File: Screenshot_17.jpg (32KB, 760x114px) Image search: [Google]
Screenshot_17.jpg
32KB, 760x114px
>>57286623
ohh shit, I think it's because I'm a mod, once I entered in incognito it showed like yours
>>
>>57286604
Why not use JS and node, and write C extensions to node?
>>
Is networking easier on BSD? I'm thinking about porting my project from epoll to kqueue
>>
>>57286604
{-# LANGUAGE Strict #-}
>>
>>57286604
>I'll wait for the "next Haskell".
So Idris?
>>
>>57286640
Isn't it obvious? I want to be able to run my code(except platform-specific parts) everywhere: in browser, on desktop, on mobile.
So I obviously need a JS backend for browser support. For everything else I need something like C or LLVM.
>>57286662
That's a viable solution with a major drawback: battery life. Unfortunately V8 is very battery-hungry, if it wasn't an issue I'd be happy with nodejs/electron.
>>57286688
Lolwut? It allows to make the whole program strictly evaluated or just a single module?
>>
>>57286719
the modules you use it in

>>57286718
He wants a good language
>>
>>57286718
I've heard about it a long time ago, but it's still too soon to use it. I'll trust their FAQ:
>the primary goal is not (yet) to make a system which could be used in production
So nope.
>>57286742
That means it still needs the whole runtime in the JS environment. Not acceptable.
>>
>>57286380
>An IDE like Medium, not Vim
i am ANGRY
>>
I need help
So i've got an assignment mostly complete, and so far my .c file works perfectly when compiled. but I need to deliver the assignment as a .o file and a .h file, and for some reason trying to declare my functions in the .h file breaks the code for some reason, sending warnings of implicit function declarations. I know I havent mistyped anything. What do i do? using gcc btw
>>
>>57286780
pretty sure it's smaller than java's
>>
yo where my og awk heads at

I want to iterate incrementing timestamp pattern range finds and do math on different logline fields. I've been doing it the slow and dumb way
/00:00/,/01:00/ {stuff}
/01:00/,/02:00/ {stuff}
I'm wondering what the better approach is though. Stick functions in the BEGIN and increment with a for? Forgot pattern matches altogether and just dump them all into arrays with the time as the key? (probably faster)
I'm a noob so I'm just blindly stabbing around
>>
Any practical programs I can write to practice?
>>
>>57286827
no
>>
>>57286827
porn organizer
>>
>>57286827
FizzBuzz world
>>
>>57286827
bst implementation
>>
>>57286791
Why do you mention Java?
>>
>>57286896
:^)
>>
>>57286466

I think you're right, but how do I fix it?
>>
whats a good thing to do in haskell that isn't compiler writing
>>
>>57287120
FizzBuzz
>>
>>57287140
please, I'm serious
>>
Anyone know how to remotely delete e-mails from a laptop that's not connected to the internet?
>>
>>57287153
superior version of paint
>>
>>57286399

because if I wanted to jerk my cock I'd use java
>>
>>57286932
your input buffer will have "Y\n" stored. So you scan in the "Y" and the "\n" is left. You have to swallow that somehow, by scanning it in for example, or dropping the input buffer completely. It depends on your language.
>>
>>57286367
As people have mentioned, you should use new and delete instead of free. Also, look into smart pointers. You don't really need to use delete in c++ anymore.
>>
>>57285413
Breaks their terms of service. They can definitely come after you, but there's no guarantee they win
>>
>>57285413
>going up against microsoft's lawyers
here is a description of your future:

http://www.npr.org/sections/alltechconsidered/2016/10/13/497820170/the-man-who-stood-up-to-facebook
>>
>>57285413
Legally you are fine. I don't think there is a single successful case of someone being sued over breaching a sites ToS. As long as your scraper is running slow / infrequent enough where it can't be construed as a denial of service attack, there is literally nothing they can do except for block your IP.
>>
>>57286787
Provide an example of what you are doing
>>
File: abstraction.png (1MB, 1200x1198px) Image search: [Google]
abstraction.png
1MB, 1200x1198px
>>
File: sad-cat.jpg (134KB, 900x900px) Image search: [Google]
sad-cat.jpg
134KB, 900x900px
>two years experience as a dev
>I fucking suck at hackerrank

If I get good at this site, will I actually be a better developer, or will I have just memorized some shit for technical interviews?
>>
>>57287582
>i have work experience
you've already won
>>
>>57287417
ok so the first lines of my .c file are like this
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXNODEDATA 2000
#define MAXNODES 800

typedef struct moldenodo{
int data;
struct moldenodo *right;
struct moldenodo *left;
}nodo;

nodo *crea_nodo(int num){
nodo *newnode=malloc(sizeof(nodo));
if (newnode==NULL) exit(1);
else{
newnode->data=num;
newnode->right=NULL;
newnode->left=NULL;
return newnode;}
}
and so on (The main is at the bottom).

what i was doing was removing the #defines and #includes and replacing them with #include "bst.h"
bst.h has things like so:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXNODEDATA 1000
#define MAXNODES 500

struct nodo;
nodo *crea_nodo(int num);
nodo *inserta_nodo(nodo *root, int num);
nodo *rotate_right(nodo *root);
and so on.
It doesn't work, though. nodo remains undefined and i get a bajillion [-Wimplicit-function-declaration]
>>
>>57285014
I hate this op. Even an animu is better.
>>
>>57287641
agreed
>>
>>57287595
It's dumb experience though. I just glued shit together.

I guess what I'm asking is will sites like this teach compsci fundamentals and prepare you for interviewing at the same time?
>>
>>57287624
typedef goes in the .h
>>
>>57287666
You'll learn a lot on your own if you simply try to make your own project without relying on other people's libraries whenever possible.
>>
>>57287666
>compsci fundamentals
seems unlikely
>>
>>57287275

> malloc is deprecated

https://www.youtube.com/watch?v=aNj0Euhptqk
>>
>>57285014
If a process forks multiple children, will it get back a SIGCHLD for every child or just for when they're all terminated?
>>
>>57287837
Since Bjarne
>>
>>57287724
thanks
>>
>>57287854
Only when they terminate.
>>
>>57287854
For each terminated child.
>>
>>57287901
>>57287898
Is it possible to only receive one if each child terminates too close to the same time?
>>
>>57287624
You need to include the .h file in the .c file.
//bst.c
#include "bst.h"


When you include a file, everything included in that file is included as well. So you don't need to reinclude everything. You don't need to have those #define's twice either.
>>
>>57287936
Signals will queue up
>>
>>57287936
Not sure what you mean but no. You'll have to do that in your signal handler.
>>
Why is C so fucking retarded about character strings?

I shouldn't have to involve points just to use "Yes" as a variable.
>>
hi /dpt/,
I need to use c sockets for an assignment, and i've looked at examples all over the place, but I still cant grasp the usage of bind(), connect() and listen().
>>
>>57288074
Maybe you should try reading about how strings work in C.
>>
>>57288074
Strings are arrays of char, that's just how c does it. strings.h includes lots of functions that can help.
>>
>>57288074
'Yes' is a valid identifier, isn't it? I'm pretty sure it's not a reserved word.
>>
>>57288074
All non-trivial C abstractions are built upon pointer arithmetic.

You should look up what an array in C is.
C has no "string" type, only arrays of chars, which can form strings.
>>
Could someone point me in the right direction? I've got an idea for a useful application, and it's probably already a solved problem in CS, so I'd like to see if I can read anything.

Basically, take a physics class with 500 students in it. They all want to join a study group, but they're antisocial and coordinating times is difficult. So instead, they turn to computers.

I want to write an application that will take all the schedules of the students, based on the times they said they'd be available to have a study group, and find the time slots during the week which would be the most optimal for larger groups. To do this, I would check the overlap on 1 hour time blocks. for example, if 27 students said they were available from 6-7, that would be a more preferable time to have a study group than an 11-12 time slot when only 3 people said they could form a study group.

Of course, some of those 3 people may only be available then, and some of the 27 people may be among those 3 people, so you have to choose the optimal time slot so that everybody who can form a study group DOES form a study group (if there are some people whose schedules somehow do not overflow with anybody else's schedule, then they have to deal with it)

Is this something that there's been a lot of research into?
>>
How do you get your first programming job? A lot of them have one language in the requirements that I kind of know then a whole bunch of other ones I haven't dabbled with. I'm afraid of not learning the other languages they need fast enough
>>
>>57288243

Yes, all scheduling problems with all cases accounted for are NP-complete, so you can only do either special cases that can be computed without NP-complete time or use heuristics and get non-optimal solutions.

https://stackoverflow.com/questions/2177836/algorithm-for-creating-a-school-timetable
>>
>>57288131
https://msdn.microsoft.com/en-us/library/windows/desktop/ms737548(v=vs.85).aspx
>>
Can someone explain the point of setter methods seem pretty useless to me. Why would I want them?
>>
>>57288390
To compensate for a weak type system.
>>
>>57288390
Because OO was a mistake. It's considered bad practice to be able to access a classes variable directly in languages like C++/Java. Most "pythonic" code doesn't have setters and getters though, since there is no real private data, though.
>>
>>57288293
Thanks, this helps a ton! So if I wanted to find more information about something like this, would I look for books about heuristics and optimization?
>>
Working on my Binary Compression Engine, so far extremely good results :P

If anyone has cool concepts that are used in compression, I'd like to read some articles
>>
>>57285119
>will yell to you
So they're also factually autists?
>>
>>57286517
>your code has to be proprietary to make money
top lel. You know what you charge money for? Sublicensing. Your library under GPL attracts developers, and then when THEY want to monetize you give them the option of a sublicense if they pay for it.
>>
>>57286517
This here is free, it's a community. If you want advice for commercial projects, we charge. So's business.
>>
>>57288390
Teachers and Java frameworks will force you to use them. Teachers don't really have a good reason, java frameworks kind of do (they rely on getters/setters to work).

When it's not one of the above two cases, you should use them when it makes sense to. Usually it doesn't.

If you're using C# then feel free to write {get;set;} after every variable declaration to get the same functionality but 100 times cleaner.

The most important part is to be consistent so that you never have to guess if the variable is accessed directly through object.publicVar or through a getter object.getVar()
>>
void rep(char *str, char rep) {
for (; *str != '\0'; str++)
*str = rep;
}
>>
>>57287624
>typedef struct
don't do that
>>
>>57287624
add [ code ] [ / code ] without the spaces and you'll get formatted code between the tags
>>
>>57288539
memset(str, (int) rep, strlen(str));
>>
>>57288390
They're a hack really. The only good argument so far is that get/set maintains an interface in case the semantics of the data changes. The method doesn't have to just be
void setX(flloat x){
this.x = x;
}

maybe later ti gets changed to where the input x goes through computations or something.

I call them a hack because a lot of data should be constant, or relatively constant (ie. changed as little as possible). But OOP and 'best practices' are already pretty dumb because they only focus on the organization of source code rather than functionality.
>>
File: sd.png (10KB, 709x485px) Image search: [Google]
sd.png
10KB, 709x485px
When will OOP stop promoting the strongly flawed idea that objects should contain the functionality of themselves? It does not work. A car cannot drive itself, for it does not know where the road is.
>>
>>57288790
that's why you need a driver object
>>
>>57288390
If you're designing classes for retards you might want to make sure they're not being retarded with a variable so your setter can baby them through not fucking up.
>>
I'm working on implementing doubly linked lists in C++. I have everything working except for the remove method. I thought I had it working before when I just had separate methods for removeFirst and removeLast but I'm trying to combine them. Removing the last node works, but removing the first node just puts it at the end of the list and removing any other node in between removes it and then puts all the nodes behind it at the end of the list.

Here's my code:
inline void remove(int i) {
if (i == 0) {
Node<T> *temp = myList->myNext;
temp->myPrev = myList->myPrev;
myList = temp;
} else if (i == (this->size() - 1)) {
myList->myPrev = myList->myPrev->myPrev;
myList->myPrev->myNext = myList;
return;
} else {
int cnt = 0;
Node<T> *tempx;
Node<T> *temp = myList;
temp = temp->myNext;

while ((temp != myList) && (cnt <= i)) {
if (cnt == (i - 1)) {
tempx = temp;
tempx->myNext = temp->myNext->myNext;
tempx->myNext->myPrev = tempx;
temp = tempx;
}
cnt++;
temp = temp->myNext;
}
myList = temp;
}
}
>>
File: prototype-early.jpg (254KB, 2000x1333px) Image search: [Google]
prototype-early.jpg
254KB, 2000x1333px
>>57288790
>>
>>57288847
there's a car that's considering suicide
>>
>>57286502
Nice anon. Finally you're starting to program properly.
>>
>>57288790
Anon it's core to OOP. It will never stop.
It simply means that OOP is flawed stop concerning yourself with it and just ignore it. You don't have to bother with others code.
>>
>>57288390
If you need a filetype with a set of values to be consistent, you have to make sure that you cannot change a single value without changing the others to maintain consistency. There are better understandable methods than making set/get functions, f.e. overloading operators with consistency managing functions, but basically this does the very same thing.
>>
>>57288881
>There are better understandable methods than making set/get functions
The best would be dependent types.
>>
>>57288828
I'm not sure what you're doing here anon. But removing an element from a doubly linked list is just
toBeRemoved->next.previous=toBeRemoved.previous;
toBeRemoved->previous.next=toBeRemoved.next;
//then handle the deleted node.

If it's a circularly linked list. If it's not just insert NULL checks for previous and next. And null the next/previous pointer of the previous/next element.

I appreciate your dedication to writing your own attempt at a solution. It's very good that you do that. It's how you learn to solve problems. But it's really as simple as pic related. And I can't really be bothered to try and figure out where you went wrong here. What misconceptions you have.
>>
>>57288790
Just use dependency injection in all of your objects for all of your functions
>>
Anyone have any ideas on how to convert a string like "foobar" to a unique integer number?
>>
>>57288828
let's start small. when removing the head: what is list->prev? shouldn't that always be null?
>>
>>57288390
Assuming proper usage. They're there for safety. You'd assert that the value being set is not illegal. That can catch bugs.
Getter methods are (in the trivial cases) just there because languages don't have one way private members usually. Meaning there's no way to say 'don't let me assign to this value directly but let me read it directly'. They're probably what looks the most useless to you.

The usage of getter setter methods can allow you to more easily insert things like events in an OOP system. Like 'on value change' events that get broadcast.

But overall they're pretty stupid. For your own programming you should probably realise when it's appropriate. If you have something and you're thinking 'I always wanna check this case before I set this value'. Use a set method. If it's a legal state and you're handling the odd case in your program you should return a bool (or some prefer you return what value was set) from the function. If it's not a legal state (for instance for some reason you're setting a length to be negative) you should probably assert instead.
>>
>>57289011
There are more combinations of strings than there are integers.
>>
I was looking at my old network labs from school earlier, where i had object wrapped my sockets. I thought it looked pretty clean, actually. I was happy with my work.
>>
>>57289011
Sounds like you just want a hash function.
>>
>>57289034
The list is circular so it should link to the end.
>>
>>57289084
that would have been good to mention
i think you should also give us your working head remover so we can compare
>>
>>57289011
6 character strings fit in a 64 bit integer
>>
>>57288966
That's why I'm not understanding what's wrong; it's a circular doubly linked list, so I wasn't understand why it was relinking the beginning to the very end instead of at the beginning.
>>
>>57289011
foobar being 102111111098097114 by simply concatenating the character's decimal Ascii values would already be unique to that string.
Reinterpret the bit sequence of characters as int would also work.
>>
>>57289011
If you're dealing with strings <8 chars (like foobar) you can just take the bit sequence and out it into a 64bit value.
But you're not really converting it at that point. You're just making the string into number.

But you can't uniquely map longer strings into a smaller range. For instance you couldn't take a sentence and put it into a 1 byte value. Because 1 byte can only store 16 different states. You're not gonna find a way to make an unique identifier for that.

If you're accepting collisions or consider them unlikely enough you can just hash it based on a large part of the string. Like summing pairs of characters (while allowing overflow) until they fit your 64bit number. It's fairly unlikely to collide.

Maybe you should consider a hash map?
>>
>>57289103
Well if you have a circularly linked list there's not really a beginning and an end right? It's just where you happened to start. You can take any node in the circular list and consider it as the beginning or the end. The reason my code example works is because it's agnostic of a beginning/end. Since you have this odd while loop thing going on you're clearly not doing that.
>>
>>57289084
anyway, probably the issue is that when you enter this function, tail->next = head. you never change this as far as i can see
>>
>>57289137
>>57289165
Those are both good points; thanks for the help! I'll see what I can do.
>>
File: IMG_4872.jpg (749KB, 1500x1000px) Image search: [Google]
IMG_4872.jpg
749KB, 1500x1000px
>>57288828
also, can any c++ bros chime in on whether he should be freeing something here?
>>
>>57289212
Yup
>>
>>57289250
What should be freed and when?
>>
>>57289304
Seriously?
How do you create new nodes?
>>
>>57289212
who this
>>
>>57289323
Some random plastic korean. They are all interchangable.
>>
>>57289304
Node<T> *temp = New Node<T>(t);

?
>>
I have been studying C++ for a couple of days and cout << "XD";
>>
>>57289386
>cout
> not printf
Lolzors
>>
>>57289375
Exactly. So you need to free the node you just removed, or you'll have a memory leak.
>>
>>57289430
According to the book printf is a shitstick
>>
>>57289439
Which book?
>>
>>57289453
C++ primer
>>
>>57289439
You should try formatted output with a string stream then.
>>
>>57289465
Yeah I know that one
>>
>>57289437
Do I free all temps at the end of each method then? I thought that was the whole point of calling delete within the destructor.
>>
quick, whats a nice way to remove the last element of a list in lisp

even if its destructive!
>>
>>57289564
(((delethis))))
>>
>>57289528
But what are you calling delete on, in the destructor?
>>
>>57289463
Lol. People actually bought that?
>>
>>57289577
The List node, and its destructor deletes its next and previous nodes.
>>
>>57289439
>printf is a shitstick
Are you fucking kidding? printf is amazing.
C++ iostreams are ridiculously ugly, retardedly designed and make internationalisation very hard.

Beautiful and clean C code:
#include <stdio.h>

int main()
{
printf("%-8.2f%s\n", 3.14159, "pi");
printf("%.3f\n", 123.456);
}


C++ iostream code with equivalent semantics:
#include <iostream>
#include <iomanip>

int main()
{
std::ios state(NULL);
state.copyfmt(std::cout);
std::cout << std::left << std::setw(8) << std::fixed << std::setprecision(2) << 3.14159 << std::setw(0) << "pi" << std::endl;
std::cout.copyfmt(state);
std::cout << 123.456 << std::endl;
}
>>
>>57289692
>C++ iostreams are ridiculously ugly
what are the arguments in favor of them? surely there must be something
>>
>>57289708
There is no good reason to use them.
>>
This is a big, preemptive FUCK YOU if you decide to implement Lua as a scripting language in any of your programs.

What a contrarian piece of garbage.
>>
>>57289756
Lua is great, mate.
I think you might just have shit taste.
>>
>>57289656
So you recursively delete all the nodes in the list, good job.
What about all the nodes that aren't in the list because you've removed them from the list earlier?
>>
>>57289770
Those-I should definitely free. I had didn't even think about that.
>>
>>57289692
>make internationalisation very hard
No they don't. Fuck off. We've had this argument before.
>>
>>57289794
Yes, we had this argument before and format strings were clearly the better option.
>>
>>57289708
>>57289741
I honestly believe their only purpose is to make introductory programming classes easier to understand.
All they teach in college is how to write dumb terminal calculators, after all.
>>
>>57289768
Go fuck yourself and take your autistic brazilian language with you.
>>
>>57289756
Would be nice if better languages were as easily embeddable.
>>
how come I can't do
(setf j '(1 2 3))
(setf (last j) nil)
>>
>>57289797
Yes, but not because of the internalisation argument. That's bullshit.
>>
>>57289708
>>57289798
>>57289741
Only reasons why I would use cout instead of printf is if I am designing a class.

It's easier to type something like

xml file;
// code
cout << file << endl;


Then it's easier to type in any sort of stream in replace of cout. Like a file stream for example

But the functionality can exist without it. With
file.print();
//or
file.toString();
>>
>>57289847
>but not because of the internalisation argument
I really can't be fucked going back ages to find my arguement or typing it again, but iostreams hard-code the order of the arguments and don't allow for strings to be added added after/before arguments. It's the exact same problem as string concatenation.
>>
>>57289862
I don't understand the semantics of your dumb file abstraction.
fwrite(data->blk, data->size, 1, file);
>>
dumb question here

I see
char name[256]


what does this mean? an array called name that 256 elements made up strings?
>>
>>57289885
Maybe some people want their output in a readable format? I was using xml as an example because in order to apply it to the standard, you need readable output
>>
>>57289756

Lua's not the worst language you could script with. In fact, it's pretty fast (albeit, the type system is atrocious). What's your problem with it?

>>57289811

Plenty of languages embed rather easily. Scheme embeds nice in the form of TinyScheme and S7. Ruby has MRuby, JavaScript can be embedded comfortably with Duktape... for some definition of comfortable (it IS JavaScript after all, but at least you're not having to embed an entire web browser in your application). And then there are languages like Squirrel, which were designed to be embedded into applications.

It would be incorrect to say that you don't have options.

>>57289907

An array called name of 256 characters, each one byte in size.
>>
>>57289907
no, it's a char array of size 256
there's no strings in C, you can form one by making an array of char.

If you want an array of 256 strings, you'd use
char *name[256]
to instantiate a pointer to an array of 256 char * pointers, each of which can point to another array of chars.

>>57289918
Who uses XML in 2016?
>>
>>57289933
Make it json then you flaming faggot
>>
>>57289865
Yeah, because ordering of a few arguments is all it takes for good internationalization.

And if you think the method i showed you to allow for variable argument ordering is "very hard" then you have no business being near the c standard library.

>don't allow for strings to be added added after/before arguments.
And this is just false.
>>
>>57289925
thank you!
>>
>>57289971
>Yeah, because ordering of a few arguments is all it takes for good internationalization.
With simple text output, it kind of is.
Format strings allows you to use things like gettext, iostreams do not.

>And if you think the method i showed you to allow for variable argument ordering is "very hard"
You had just invented a very crappy version of format strings, assuming you're the person I'm thinking of.

>And this is just false.
Have fun with all of your pointless empty strings then.
>>
>>57289925
>What's your problem with it?

1-indexed arrays :^^^^^^^^^^^^^^^^^^^)
>>
r8 my factorial
(define (! x)
(fold * 1 (iota x 1))
>>
Why would I be missing signals. If I set my signal handler to wait for SIGCHLD and sometimes the early children don't send the signal.

I'm timesharing processes and switching between them.

The calls still goes through so I assume the process ends, but the parent never receives the signal.

It works sometimes, but other times the first few processes' signals or the last one will never arrive.
>>
>>57290019
not in cl /10
>>
>>57285014
Is a way there to make a code that takes and output and an input of a xor encription and crack the key?
>>
>>57288390
Sure thing.

Let's say you have a rigid body class with mass, density, and volume members. You want to make sure the relationship: mass=density*volume, is always maintained so you have setters for that. If someone could just write
 density=5; 
than any simulation using that object would behave in unexpected ways.
>>
>>57290009
No serious project that actually motivates any internationalization effort is going to be that simple.

> very crappy version of format strings
because that's what you said was needed needed. it was MARGINALLY more clumsy than the original
>>
>>57290080
Coding defensively against stupid people using your library is a waste of time and processor cycles.
>>
File: 1476638692809.jpg (205KB, 1439x1374px) Image search: [Google]
1476638692809.jpg
205KB, 1439x1374px
>>57290024
Oh I was using printf()
>>
>>57285280
its obvious you've never programmed in Haskell because guards are supported
>>
File: 1477046158110.jpg (137KB, 1080x948px) Image search: [Google]
1477046158110.jpg
137KB, 1080x948px
>>57285014
Reading Programming and Principles by Stroustrup. Out of curiosity, does anyone know why the condition in while(cin>>num) would evaluate to true but can't be captured by a variable?
>>
>>57290580
because cin >> num isn't an expression, just a statement.
>>
>>57290586
but why does the while loop execute on that statement if something isn't evaluating or returning true to to that point in the program?
>>
>>57290606
why don't you just use fgets?
>>
let HandleInput (kbState:KeyboardState) actor =
let rec HandleKeys keys (currentVelocity:Vector2,state) =
match keys with
| [] -> currentVelocity
| x :: xs -> match x with
| Keys.Left -> let newSpeed = if (currentVelocity.X - 0.1f) < -1.f then -1.f else currentVelocity.X - 0.1f let newV = Vector2(newSpeed, currentVelocity.Y) HandleKeys xs (newV,state) | Keys.Right -> let newSpeed = if (currentVelocity.X + 0.1f) > 1.f then
1.f
else
currentVelocity.X + 0.1f
let newV = Vector2(newSpeed, currentVelocity.Y)
HandleKeys xs (newV,state)
| Keys.Space -> match state with
| Nothing -> let newV = Vector2(currentVelocity.X, currentVelocity.Y - 3.f)
HandleKeys xs (newV, Jumping)
| Jumping -> HandleKeys xs (currentVelocity,state)
| _ -> HandleKeys xs (currentVelocity,state)
match actor.ActorType with
| Player(s) -> let initialVelocity = match actor.BodyType with
| Dynamic(v) -> v
| _ -> Vector2()
let velocity = HandleKeys (kbState.GetPressedKeys() |> Array.toList) (initialVelocity, s)
{ actor with BodyType = Dynamic(velocity); ActorType = Player(Jumping) }
| _ -> actor
>>
>>57290580
>does anyone know why the condition in while(cin>>num) would evaluate to true but can't be captured by a variable?
The >> operator returns a pointer to the associated ostream object. When casted to a boolean as "while" would do, it will cast to true unless it's a null pointer.
It can be captured as a variable, but you need to be aware what it's returning.

>>57290586
This is wrong
>>
>>57290644
I suppose I could, but I'm more concerned with why the conditional in the following code evaluates to true when it only contains a statement and not an expression:

while(cin>>num){ //do something}
>>
>>57290757
have you tried something like
while (val = (cin >> num)) { ... }
>>
>>57290741
That makes sense. Thank you.
>>
>>57290673
might as well learn java
>>
>>57290580
>can't be captured by a variable
how did you try to do this, exactly?
>>
I have this
(case whatever
('left ...
('right ...
('down ...
('up ...
(otherwise 'fuck-your-self)

but whenever way is one of them, it still makes me fuck myself, how come
>>
>>57290795
I tried casting the value to a bool with the same syntax as in your post, but I get the following error: no suitable conversion function from "std::basic_istream<char, std::char_traits<char>>" to "bool" exists
>>
>>57290806
also get in the habit of poking around the docs. it's just an operator overload and you can find out what the result is
http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt
>>
>>57290835
*whenever whatever
>>
>>57290835
Dunno, is it breaking after each case?
>>
>>57290854
Good advice. Thank you.
>>
>>57290861
works now, thanks
>>
C++ can make literally anything right?
>>
>>57290835
Is this CL or Scheme?
In scheme you do
(case whatever
((left) ...)
((right) ...)
((down) ...)
((up) ...)
(else 'fuck-youre-self))
>>
>>57290957
So can any other language
>>
>>57290977
How would you write an OS bootloader in js?
How about in haskell?
>>
>using obsolete programming languages

http://programming.witheve.com
>>
>>57290996
I don't get it, it's a programming language that looks like documentation pages?
>>
>>57290992
You could if it were compiled
>>
>>57291048
Still not enough though.
You still need a run-time environment that can run on bare metal.
>>
>>57290957
yeah that's why ti has every single thing you could ever possibly need in the libraries and they keep adding more.
>>
>>57290964

It's definitely not Craig's List
>>
>>57290992
Youd have to write a compiler that links a GC and a primitive library for reading from disk or doing direct memory operations, and then itd be completely possible.
>>
>>57291060
Nothings stopping a GC from running on bare metal, in fact it happens a lot, there are lua and python interpreters written for resource starved ARM CPUs.
>>
File: 2016-10-29_05-11-49-1.webm (624KB, 806x508px) Image search: [Google]
2016-10-29_05-11-49-1.webm
624KB, 806x508px
Am i learning yet?
>>
var elements = document.getElementsByClassName('postContainer');
var com = document.getElementsByName('com');
var str = com[0].value;


for(var i=0; i < elements.length; i++) {
if(elements[i].getAttribute('id')[elements[i].getAttribute('id').length-1] == elements[i].getAttribute('id')[elements[i].getAttribute('id').length-2])
str += '>>' + elements[i].getAttribute('id').substring(2) + '\n';

}
str += 'checked :^)';
console.log(str);
com[0].value = str;


>>57285077
>>57285244
>>57285411
>>57285422
>>57285455
>>57285466
>>57285477
>>57285488
>>57285511
>>57285799
>>57286399
>>57286466
>>57286622
>>57286688
>>57287666
>>57287755
>>57287888
>>57288000
>>57288155
>>57288466
>>57288966
>>57289011
>>57289322
>>57289577
>>57289800
>>57289811
>>57289933
>>57290011
>>57290644
>>57290799
>>57290977
checked :^)
>>
NEW THREAD!!!

>>57291269
>>
>>57291225
Sure, but the run-time has to be written that way for it to work.
That's just not the case for the Haskell run-time.
Thread posts: 312
Thread images: 22


[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.