#control structure in java
Explore tagged Tumblr posts
rakkwal · 7 months ago
Text
Tumblr media
Play.CivMC.net
Version: Java 1.20.1
CivMC is a geopolitical Minecraft server focused on civilization-building. Players form nations and establish governments, wars occur, and treaties are signed. You can play with friends, punish your ideological enemies, or raid and attack indiscriminately. All interactions and laws are player enforced, with the help of plugins that have defined the genre since it's inception as CivCraft. You can view the player run wiki here, the player run map (with rail lines, nation borders, ect) here, and the player run newsletter here. The wiki also contains a New Player Guide! Every new player gets one free teleport within 24 hours of joining, make it count! Basic information under the cut.
The primary plugins used on CivMC to make it unique are NameLayer, Citadel, and Exile Pearl. FactoryMod also deserves a mention here.
Exile Pearl is arguably the most interesting mechanic, which allows you to kill another player with an Ender Pearl on your hotbar. This will imprison said player in the Nether, and also imposes restrictions on their gameplay. Pearls degrade however, and player "Essence" is required to keep them fueled. Essence is granted on a daily basis to players after being online for 30 minutes. Requiring a somewhat active nation to keep others imprisoned. Pearled players are kept in vaults, disgustingly large and complex obsidian structures meant to have maximum security.
Tumblr media Tumblr media
NameLayer acts as the base structure for many other plugins on the server. It allows players to make groups, with different ranks in said group having more, or fewer, permissions within a group. Such as who can buy from your shops, open doors and chests, or who can chat in said group. This last one is important, as the default chat range is only 1000 blocks. However there is a public global chat, just type "/global" after joining to participate, and "/local" to revert back.
Tumblr media
Citadel is a reinforcement plugin that will make your chests harder for nefarious actors to break into, your buildings more resilient to attacks, and allows you more peace of mind during your off hours. Individual blocks, chests, doors, etc can be locked with reinforcement materials. Each material requires a set number of breaks before the block will drop. Stone is 50, iron ingots are 300, and diamonds are 2000. Virtually every build in the game is reinforced with stone, more expensive materials are reserved for more important things, like chests. NameLayer hooks into Citadel to allow granular access control for almost everything!
Tumblr media
FactoryMod allows you to create small structures known as factories, made from a furnace, crafting table, and a chest. Factories allow for more complex recipes and items not found in vanilla minecraft. More efficient recipes than in vanilla minecraft (32 gold ore to 48 ingots, 64 cobble to 96 stone!). And cheaply available decorative blocks to make your builds nice.
Tumblr media
There are plenty of other mechanics I haven't touched upon, like brewing alcohol for unique potion effects, how crops grow (or don't!) in certain biomes, the distribution of ores, or how you can see who broke into your home and stole all your crafting tables. See the wiki for more information on game mechanics! There are plenty of nations on the server, which I would recommend joining before trying to make your own. One of my personal favourites is the nation of Pavia, locted at (800, -3000)
Tumblr media
Pavia is an elective meritocracy, comprising of a Prime Minister and his Cabinet, elected by the Nobility of Pavia. Pavia's territory is divided into distinct classes outlined by the foundational law of the country, the Magna Pavia. These classes administrate their own territories with varying states of autonomy and all add their own story to Pavia's ever-growing lore & history! Pavia is famous for its incredible and sprawling architecture as well as its economy, home to the largest Bank on CivMC and one of the server's most extensive shopping districts. There is a tutorial open to anyone to learn every guide and plugin which is located in the Pavia townhall, if you wish to use the server tutorial head to (+800 , -3065) inside the building on the ground floor. If you are new to CivMC, it is recommended you start off by settling in the Bedford Commons, a city just outside the capital's walls. The coordinates are (+1000, -2800).
Tumblr media Tumblr media
36 notes · View notes
cornbread-but-cringey · 5 months ago
Text
Cornbread's Texture Fixer Devlog v0.9.0 - Beta 6 December 8th, 2024
i've decided i'm going to be doing weekly devlogs for whatever pack i'm working on at the time. primarily so this blog (pretend i posted this to the mc sideblog; i saved the draft wrong) isn't overrun with my responses to the vanilla change logs, but also, it adds a bit of structure to this whole thing. (well, i say this, but i've also put this off by multiple days).
anyway, first things first, i have updated my fix to the sides of grass blocks to account for the pale garden. (vanilla on left, resource pack on right)
Tumblr media Tumblr media
it isn't perfect, but that's mostly because minecraft's biome blending as a whole isn't perfect.
also, i only included the colors for transitions to dark forests, birch forests and groves, since i'm contemplating increasing the number of colors for each biome transition again. that'd be a lot of work for something that i don't even know if it'll be more accurate, so i haven't yet come to a decision, but once i do, i will finish the pale garden biome transitions.
these are the only transitions i even found generating naturally anyway, and bedrock edition does not yet have /fillbiome, so this shouldn't be noticeable in-game, but if it is, i would appreciate if people told me.
i fixed the issue this pack was having with cobblestone walls, as i said i would.
i removed the textures for the different types of nether bricks, since vanilla fixed their issue, but to match them (and other kinds of bricks), i shifted the texture for mud bricks over a pixel to the left, so that the stuff in between the bricks (i forgor what it's called) is on the right side.
Tumblr media Tumblr media
in very early versions, this pack and Conglomeration were initially meant to be one and the same, but that ended up getting changed. while a bunch of features got removed in favor of just having them in conglomeration, bedrock edition's green item slot highlight is just really ugly, and so the java-edition-styled highlights stayed in the pack for a long time, up until their removal in Beta 5.
i reverted that back.
turns out, the green slot highlight, apart from being really ugly, is also really difficult to work with from a creative perspective. particularly, in the crafter screen and the new bundle tooltip (bundle ui changed slightly in game version 1.21.50).
so i re-implemented all the JE-styled highlights i had from Beta 4. (i also reverted the changes to the buttons on the beacon screen, since those use the same color palette). there were some small changes to the json, but those aren't super important. what is important is that these changes meant i had to start paying attention to the bundle ui, which, of course, is off center. so i fixed that.
Tumblr media Tumblr media
sidenote, but you ever notice that light blue and light gray bundles have long enough names to stretch the ui?? java edition has its bundle ui pre-stretched to deal with this, which is kinda silly imo.
anyway, i also did the highlight inside the bundle ui:
Tumblr media Tumblr media
this is mostly accurate to java edition, except the slot background doesn't disappear when the highlight is visible, since the background of the tooltip is already opaque (and therefore inaccurate) anyway.
this uses two different textures (directly adapted from the java edition textures) because i couldn't get it accurate otherwise, but it might still be technically better optimized than vanilla, since it isn't needlessly checking whether touch controls are being used (selecting an item with touch controls instantly closes the bundle ui).
speaking of which, i also fixed bundles with pocket ui.
i'm holding off on pocket ui until the end of this pack's development, but i figured since i'm already here and pocket bundles are in the same file as classic bundles, i might as well.
Tumblr media Tumblr media
aaaaand before we leave bundle land, i just want to say that Beta 5 has an issue where a closed bundle is visible behind the open bundle when scrolling through a bundle's contents in a crafting grid specifically. i don't have an installation of Beta 5 right now to show this off with, but i fixed it.
one of my favorite parts of this pack is the way it changes the recipe book (/creative inventory). in vanilla, as with the rest of the ui, things are just kinda scaled willy nilly. the scrolling part of the recipe book doesn't quite fit into the space allotted, but this pack fixes that. (would you believe me if i said it was difficult? you shouldn't, because that would be me lying.)
one of the things this pack neglected to fix previously was the length that the recipe book scrolls. in vanilla, as with some other parts of the ui, the recipe book scrolls down farther than it should, leaving a noticeable gap between the buttons and the bottom of the scrolling area.
i didn't previously have any idea what the issue was on account of scrolling panels being complicated, but i've since messed around with dropdowns, learning a lot about scrolling in the process. the issue was the exact first thing i thought to check. mojang should be ashamed.
Tumblr media Tumblr media
Holy Shit It's So FUCKING SNUG!!!!!!!
last things last, mojang added an option to the GUI Log Level dropdown in the settings screen, making it scroll. this pack previously made it not be considered scrolling, since it didn't scroll before, but now that it does, this change has been reverted, with the fixes for scrolling dropdowns now in effect.
5 notes · View notes
popcornaddict500 · 6 hours ago
Text
through blood sweat and tears finally got a good modpack together for mc java. im just tryna create some structure with pretty shaders and decent fuckin controls man 😭
3 notes · View notes
mosspapi · 21 days ago
Text
Revisiting an old draft since the recent April fools update. I absolutely adore the way u can choose everything abt the world in the CraftMine update, like the terrain style and the specific biomes and mobs and everything, and it reminds me a lot of some things I was thinking abt irt some community fighting/"java vs bedrock" shit I saw a while ago. Hopefully my thoughts r coherent, brains been uncooperative lately.
Something I personally have been thinking about recently is Minecraft as a sandbox game. I think at least a fair portion of these conflicts/issues could be avoided if they were made optional- I Really like how Java has the experimental features tab, for example, and back in the day I used to Love the custom worldgen settings where you could change the exact ore spawns and biome sizes right in the menu to create a whole new world exactly how u wanted it to be. I don't know all the logistics of how things like that would work for multiplayer and whatnot, but having more options for how YOU want the game to be, in a way that's easier than having to find or code your own datapacks and resourcepacks to do so, could be really beneficial. Like having a "world options" tab where you can choose which trading or combat system to use, whether or not this biome will spawn, how common that structure is, if this mob can spawn, etc etc etc. Idk. I'm sure there's a lot of technical roadblocks I'm not seeing, but it's been on my mind a lot lately
^ Like I basically described this most recent april fools update but I wrote this draft Months ago. I think it would be SICK to have more control over the game in this sense. Idk
4 notes · View notes
newcodesociety · 1 year ago
Text
Tumblr media
ByteByteGo | Newsletter/Blog
From the newsletter:
Imperative Programming Imperative programming describes a sequence of steps that change the program’s state. Languages like C, C++, Java, Python (to an extent), and many others support imperative programming styles.
Declarative Programming Declarative programming emphasizes expressing logic and functionalities without describing the control flow explicitly. Functional programming is a popular form of declarative programming.
Object-Oriented Programming (OOP) Object-oriented programming (OOP) revolves around the concept of objects, which encapsulate data (attributes) and behavior (methods or functions). Common object-oriented programming languages include Java, C++, Python, Ruby, and C#.
Aspect-Oriented Programming (AOP) Aspect-oriented programming (AOP) aims to modularize concerns that cut across multiple parts of a software system. AspectJ is one of the most well-known AOP frameworks that extends Java with AOP capabilities.
Functional Programming Functional Programming (FP) treats computation as the evaluation of mathematical functions and emphasizes the use of immutable data and declarative expressions. Languages like Haskell, Lisp, Erlang, and some features in languages like JavaScript, Python, and Scala support functional programming paradigms.
Reactive Programming Reactive Programming deals with asynchronous data streams and the propagation of changes. Event-driven applications, and streaming data processing applications benefit from reactive programming.
Generic Programming Generic Programming aims at creating reusable, flexible, and type-independent code by allowing algorithms and data structures to be written without specifying the types they will operate on. Generic programming is extensively used in libraries and frameworks to create data structures like lists, stacks, queues, and algorithms like sorting, searching.
Concurrent Programming Concurrent Programming deals with the execution of multiple tasks or processes simultaneously, improving performance and resource utilization. Concurrent programming is utilized in various applications, including multi-threaded servers, parallel processing, concurrent web servers, and high-performance computing.
8 notes · View notes
priya-joshi · 1 year ago
Text
The Roadmap to Full Stack Developer Proficiency: A Comprehensive Guide
Embarking on the journey to becoming a full stack developer is an exhilarating endeavor filled with growth and challenges. Whether you're taking your first steps or seeking to elevate your skills, understanding the path ahead is crucial. In this detailed roadmap, we'll outline the stages of mastering full stack development, exploring essential milestones, competencies, and strategies to guide you through this enriching career journey.
Tumblr media
Beginning the Journey: Novice Phase (0-6 Months)
As a novice, you're entering the realm of programming with a fresh perspective and eagerness to learn. This initial phase sets the groundwork for your progression as a full stack developer.
Grasping Programming Fundamentals:
Your journey commences with grasping the foundational elements of programming languages like HTML, CSS, and JavaScript. These are the cornerstone of web development and are essential for crafting dynamic and interactive web applications.
Familiarizing with Basic Data Structures and Algorithms:
To develop proficiency in programming, understanding fundamental data structures such as arrays, objects, and linked lists, along with algorithms like sorting and searching, is imperative. These concepts form the backbone of problem-solving in software development.
Exploring Essential Web Development Concepts:
During this phase, you'll delve into crucial web development concepts like client-server architecture, HTTP protocol, and the Document Object Model (DOM). Acquiring insights into the underlying mechanisms of web applications lays a strong foundation for tackling more intricate projects.
Advancing Forward: Intermediate Stage (6 Months - 2 Years)
As you progress beyond the basics, you'll transition into the intermediate stage, where you'll deepen your understanding and skills across various facets of full stack development.
Tumblr media
Venturing into Backend Development:
In the intermediate stage, you'll venture into backend development, honing your proficiency in server-side languages like Node.js, Python, or Java. Here, you'll learn to construct robust server-side applications, manage data storage and retrieval, and implement authentication and authorization mechanisms.
Mastering Database Management:
A pivotal aspect of backend development is comprehending databases. You'll delve into relational databases like MySQL and PostgreSQL, as well as NoSQL databases like MongoDB. Proficiency in database management systems and design principles enables the creation of scalable and efficient applications.
Exploring Frontend Frameworks and Libraries:
In addition to backend development, you'll deepen your expertise in frontend technologies. You'll explore prominent frameworks and libraries such as React, Angular, or Vue.js, streamlining the creation of interactive and responsive user interfaces.
Learning Version Control with Git:
Version control is indispensable for collaborative software development. During this phase, you'll familiarize yourself with Git, a distributed version control system, to manage your codebase, track changes, and collaborate effectively with fellow developers.
Achieving Mastery: Advanced Phase (2+ Years)
As you ascend in your journey, you'll enter the advanced phase of full stack development, where you'll refine your skills, tackle intricate challenges, and delve into specialized domains of interest.
Designing Scalable Systems:
In the advanced stage, focus shifts to designing scalable systems capable of managing substantial volumes of traffic and data. You'll explore design patterns, scalability methodologies, and cloud computing platforms like AWS, Azure, or Google Cloud.
Embracing DevOps Practices:
DevOps practices play a pivotal role in contemporary software development. You'll delve into continuous integration and continuous deployment (CI/CD) pipelines, infrastructure as code (IaC), and containerization technologies such as Docker and Kubernetes.
Specializing in Niche Areas:
With experience, you may opt to specialize in specific domains of full stack development, whether it's frontend or backend development, mobile app development, or DevOps. Specialization enables you to deepen your expertise and pursue career avenues aligned with your passions and strengths.
Conclusion:
Becoming a proficient full stack developer is a transformative journey that demands dedication, resilience, and perpetual learning. By following the roadmap outlined in this guide and maintaining a curious and adaptable mindset, you'll navigate the complexities and opportunities inherent in the realm of full stack development. Remember, mastery isn't merely about acquiring technical skills but also about fostering collaboration, embracing innovation, and contributing meaningfully to the ever-evolving landscape of technology.
9 notes · View notes
Text
okay so I recently got java minecraft and oh my god. the stripped spruce planks are so much lighter??? why are they different between bedrock and java??????
anyway I've installed mods and vanilla tweaks and I've made a survival world!!! surprisingly you can find items from these mods (the mods are sophisticated backpacks and farmer's delight) in like structures and stuff. it's so different and so cool and I CAN PLAY WITH MY CONTROLLER BECAUSE I LOVE MUSCLE MEMORY!!!!!!!
2 notes · View notes
sqlinjection · 6 months ago
Text
SQLi Potential Mitigation Measures
Tumblr media
Phase: Architecture and Design
Strategy: Libraries or Frameworks
Use a vetted library or framework that prevents this weakness or makes it easier to avoid. For example, persistence layers like Hibernate or Enterprise Java Beans can offer protection against SQL injection when used correctly.
Phase: Architecture and Design
Strategy: Parameterization
Use structured mechanisms that enforce separation between data and code, such as prepared statements, parameterized queries, or stored procedures. Avoid constructing and executing query strings with "exec" to prevent SQL injection [REF-867].
Phases: Architecture and Design; Operation
Strategy: Environment Hardening
Run your code with the minimum privileges necessary for the task [REF-76]. Limit user privileges to prevent unauthorized access if an attack occurs, such as by ensuring database applications don’t run as an administrator.
Phase: Architecture and Design
Duplicate client-side security checks on the server to avoid CWE-602. Attackers can bypass client checks by altering values or removing checks entirely, making server-side validation essential.
Phase: Implementation
Strategy: Output Encoding
Avoid dynamically generating query strings, code, or commands that mix control and data. If unavoidable, use strict allowlists, escape/filter characters, and quote arguments to mitigate risks like SQL injection (CWE-88).
Phase: Implementation
Strategy: Input Validation
Assume all input is malicious. Use strict input validation with allowlists for specifications and reject non-conforming inputs. For SQL queries, limit characters based on parameter expectations for attack prevention.
Phase: Architecture and Design
Strategy: Enforcement by Conversion
For limited sets of acceptable inputs, map fixed values like numeric IDs to filenames or URLs, rejecting anything outside the known set.
Phase: Implementation
Ensure error messages reveal only necessary details, avoiding cryptic language or excessive information. Store sensitive error details in logs but be cautious with content visible to users to prevent revealing internal states.
Phase: Operation
Strategy: Firewall
Use an application firewall to detect attacks against weaknesses in cases where the code can’t be fixed. Firewalls offer defense in depth, though they may require customization and won’t cover all input vectors.
Phases: Operation; Implementation
Strategy: Environment Hardening
In PHP, avoid using register_globals to prevent weaknesses like CWE-95 and CWE-621. Avoid emulating this feature to reduce risks. source
3 notes · View notes
radiation · 2 years ago
Note
How is RPGmaker compared to Unity? Would you recommend it?
I think its difficult to compare RPGMaker to a lot of other game engines. Unity is pretty open ended in what you can make but you gotta know programming, whereas RPGMaker is kinda hard coded to make a very specific type of game very easily and without programming knowledge — the game in question being extremely generic retro JRPGs. If you wanna make something that extends beyond that you are gonna have to mess around a lot with plugins which alter and augment the preexisting structure the engine has in place.
The crazy thing is, RPGMaker (at least MV) is lacking MANY features that it by all means should have. My game doesn’t have a lot of mechanics and was designed around scope in a lot of ways, yet I am legitimately using 70 or so plugins that other people made to make it feel good. Some of those plugins’ functions include -Adding name plates over the characters’ text boxes -Making it so sprites don’t flash in and out when switching -Allowing for ANY kind of complexity in character animations -Giving you any sort of camera control -Hiding combat related UI in the menus. All of this being shit the engine SHOULD support by all means but for whatever reason it just doesn’t
I think if you’re someone who knows a lot about programming, the engine is probably gonna feel kinda bad and itd probably just be easier and less frustrating to build a lot of functionality from the ground up in an engine like Unity, GameMaker, or Godot. If you lack some experience and feel pretty confident that your game can reasonably fit within what the engine is capable of then RPGMaker is probably a good choice. And personally despite the lack of features being frustrating at times, I find myself having a lot of fun with the goofy wraparound method of problem solving you have to use and have found myself making some really cool creative decisions by working within the engine’s limits
It definitely helps a lot to know programming fundamentals either way (I’m not great but I have some experience with Java and C# and I feel like it’s been very helpful with managing project structure) so that’s something I’d recommend looking into either way if you’re not too acquainted
And I’ve mentioned it but again. Since RPGMaker is so limited you definitely DEFINITELY want to plan your project very heavily around scope especially if you don’t have much confidence that you can really delve into JavaScript programming. For example I wouldn’t recommend planning for complex UI - you will fuckin hate yourself for that. And if you’re adding combat you’re gonna wanna be super realistic about it. What I did to plan around scope was play ~10 different RPGMaker games sorta like what I wanted like to be before I started getting too many concrete ideas about what my game would look like so I could get a pretty solid idea of what was doable and mold my plans around that
Also I wanna point out - most tedious, large scope thing about my game is by far the character animations. Once I figured out just how itd work it wasn’t too bad but is still a bit annoying - but know I worked in a very very wraparound way that is way way way more involved than most — or hell, ANY RPGMaker games I’ve seen. It’s doable, can be really worth it if you’re willing to put in the time and effort, and is something I’d be happy to explain if anyone was interested. BUT i feel the need to make it clear that complex animation is very much not at all a baseline functionality of the engine since it might be easy to assume otherwise with how much it’s used in my own game
Apologies if that was long but I love talking about this stuff, and if anyone is interested I am always happy to talk about and answer any questions about my process especially with RPGMaker in mind :D
39 notes · View notes
guzsdaily · 6 months ago
Text
Good Code is Boring
Daily Blogs 358 - Oct 28th, 12.024
Something I started to notice and think about, is how much most good code is kinda boring.
Clever Code
Go (or "Golang" for SEO friendliness) is my third or fourth programming language that I learned, and it is somewhat a new paradigm for me.
My first language was Java, famous for its Object-Oriented Programming (OOP) paradigms and features. I learned it for game development, which is somewhat okay with Java, and to be honest, I hardly remember how it was. However, I learned from others how much OOP can get out of control and be a nightmare with inheritance inside inheritance inside inheritance.
And then I learned JavaScript after some years... fucking god. But being honest, in the start JS was a blast, and I still think it is a good language... for the browser. If you start to go outside from the standard vanilla JavaScript, things start to be clever. In an engineering view, the ecosystem is really powerful, things such as JSX and all the frameworks that use it, the compilers for Vue and Svelte, and the whole bundling, and splitting, and transpiling of Rollup, ESBuild, Vite and using TypeScript, to compile a language to another, that will have a build process, all of this, for an interpreted language... it is a marvel of engineering, but it is just too much.
Finally, I learned Rust... which I kinda like it. I didn't really make a big project with it, just a small CLI for manipulating markdown, which was nice and when I found a good solution for converting Markdown AST to NPF it was a big hit of dopamine because it was really elegant. However, nowadays, I do feel like it is having the same problems of JavaScript. Macros are a good feature, but end up being the go-to solution when you simply can't make the code "look pretty"; or having to use a library to anything a little more complex; or having to deal with lifetimes. And if you want to do anything a little more complex "the Rust way", you will easily do head to head with a wall of skill-issues. I still love it and its complexity, and for things like compiler and transpilers it feels like a good shot.
Going Go
This year I started to learn Go (or "Golang" for SEO friendliness), and it has being kinda awesome.
Go is kinda like Python in its learning curve, and it is somewhat like C but without all the needing of handling memory and needing to create complex data structured from scratch. And I have never really loved it, but never really hated it, since it is mostly just boring and simple.
There are no macros or magic syntax. No pattern matching on types, since you can just use a switch statement. You don't have to worry a lot about packages, since the standard library will cover you up to 80% of features. If you need a package, you don't need to worry about a centralized registry to upload and the security vulnerability of a single failure point, all packages are just Git repositories that you import and that's it. And no file management, since it just uses the file system for packages and imports.
And it feels like Go pretty much made all the obvious decisions that make sense, and you mostly never question or care about them, because they don't annoy you. The syntax doesn't get into your way. And in the end you just end up comparing to other languages' features, saying to yourself "man... we could save some lines here" knowing damn well it's not worth it. It's boring.
You write code, make your feature be completed in some hours, and compile it with go build. And run the binary, and it's fast.
Going Simple
And writing Go kinda opened a new passion in programming for me.
Coming from JavaScript and Rust really made me be costumed with complexity, and going now to Go really is making me value simplicity and having the less moving parts are possible.
I am becoming more aware from installing dependencies, checking to see their dependencies, to be sure that I'm not putting 100 projects under my own. And when I need something more complex but specific, just copy-and-paste it and put the proper license and notice of it, no need to install a whole project. All other necessities I just write my own version, since most of the time it can be simpler, a learning opportunity, and a better solution for your specific problem. With Go I just need go build to build my project, and when I need JavaScript, I just fucking write it and that's it, no TypeScript (JSDoc covers 99% of the use cases for TS), just write JS for the browser, check if what you're using is supported by modern browsers, and serve them as-is.
Doing this is really opening some opportunities to learn how to implement solutions, instead of just using libraries or cumbersome language features to implement it, since I mostly read from source-code of said libraries and implement the concept myself. Not only this, but this is really making me appreciate more standards and tooling, both from languages and from ecosystem (such as web standards), since I can just follow them and have things work easily with the outside world.
The evolution
And I kinda already feel like this is making me a better developer overhaul. I knew that with an interesting experiment I made.
One of my first actual projects was, of course, a to-do app. I wrote it in Vue using Nuxt, and it was great not-gonna-lie, Nuxt and Vue are awesome frameworks and still one of my favorites, but damn well it was overkill for a to-do app. Looking back... more than 30k lines of code for this app is just too much.
And that's what I thought around the start of this year, which is why I made an experiment, creating a to-do app in just one HTML file, using AlpineJS and PicoCSS.
The file ended up having just 350 files.
Today's artists & creative things Music: Torna a casa - by Måneskin
© 2024 Gustavo "Guz" L. de Mello. Licensed under CC BY-SA 4.0
4 notes · View notes
frank-olivier · 7 months ago
Text
Tumblr media
The Evolution of Programming Paradigms: Recursion’s Impact on Language Design
“Recursion, n. See Recursion.” -- Ambrose Bierce, The Devil’s Dictionary (1906-1911)
The roots of programming languages can be traced back to Alan Turing's groundbreaking work in the 1930s. Turing's vision of a universal computing machine, known as the Turing machine, laid the theoretical foundation for modern computing. His concept of a stack, although not explicitly named, was an integral part of his model for computation.
Turing's machine utilized an infinite tape divided into squares, with a read-write head that could move along the tape. This tape-based system exhibited stack-like behavior, where the squares represented elements of a stack, and the read-write head performed operations like pushing and popping data. Turing's work provided a theoretical framework that would later influence the design of programming languages and computer architectures.
In the 1950s, the development of high-level programming languages began to revolutionize the field of computer science. The introduction of FORTRAN (Formula Translation) in 1957 by John Backus and his team at IBM marked a significant milestone. FORTRAN was designed to simplify the programming process, allowing scientists and engineers to express mathematical formulas and algorithms more naturally.
Around the same time, Grace Hopper, a pioneering computer scientist, led the development of COBOL (Common Business-Oriented Language). COBOL aimed to address the needs of business applications, focusing on readability and English-like syntax. These early high-level languages introduced the concept of structured programming, where code was organized into blocks and subroutines, laying the groundwork for stack-based function calls.
As high-level languages gained popularity, the underlying computer architectures also evolved. James Hamblin's work on stack machines in the 1950s played a crucial role in the practical implementation of stacks in computer systems. Hamblin's stack machine, also known as a zero-address machine, utilized a central stack memory for storing intermediate results during computation.
Assembly language, a low-level programming language, was closely tied to the architecture of the underlying computer. It provided direct control over the machine's hardware, including the stack. Assembly language programs used stack-based instructions to manipulate data and manage subroutine calls, making it an essential tool for early computer programmers.
The development of ALGOL (Algorithmic Language) in the late 1950s and early 1960s was a significant step forward in programming language design. ALGOL was a collaborative effort by an international team, including Friedrich L. Bauer and Klaus Samelson, to create a language suitable for expressing algorithms and mathematical concepts.
Bauer and Samelson's work on ALGOL introduced the concept of recursive subroutines and the activation record stack. Recursive subroutines allowed functions to call themselves with different parameters, enabling the creation of elegant and powerful algorithms. The activation record stack, also known as the call stack, managed the execution of these recursive functions by storing information about each function call, such as local variables and return addresses.
ALGOL's structured approach to programming, combined with the activation record stack, set a new standard for language design. It influenced the development of subsequent languages like Pascal, C, and Java, which adopted stack-based function calls and structured programming paradigms.
The 1970s and 1980s witnessed the emergence of structured and object-oriented programming languages, further solidifying the role of stacks in computer science. Pascal, developed by Niklaus Wirth, built upon ALGOL's structured programming concepts and introduced more robust stack-based function calls.
The 1980s saw the rise of object-oriented programming with languages like C++ and Smalltalk. These languages introduced the concept of objects and classes, encapsulating data and behavior. The stack played a crucial role in managing object instances and method calls, ensuring proper memory allocation and deallocation.
Today, stacks continue to be an integral part of modern programming languages and paradigms. Languages like Java, Python, and C# utilize stacks implicitly for function calls and local variable management. The stack-based approach allows for efficient memory management and modular code organization.
Functional programming languages, such as Lisp and Haskell, also leverage stacks for managing function calls and recursion. These languages emphasize immutability and higher-order functions, making stacks an essential tool for implementing functional programming concepts.
Moreover, stacks are fundamental in the implementation of virtual machines and interpreters. Technologies like the Java Virtual Machine and the Python interpreter use stacks to manage the execution of bytecode or intermediate code, providing platform independence and efficient code execution.
The evolution of programming languages is deeply intertwined with the development and refinement of the stack. From Turing's theoretical foundations to the practical implementations of stack machines and the activation record stack, the stack has been a driving force in shaping the way we program computers.
How the stack got stacked (Kay Lack, September 2024)
youtube
Thursday, October 10, 2024
3 notes · View notes
crimson--phantom · 9 months ago
Note
Minecraft is a 2011 sandbox game developed and published by Mojang Studios. Originally created by Markus "Notch" Persson using the Java programming language, it was developed over the span of two years, with many public test builds being released from May 2009 until its full release on 18 November 2011. After the game's full release, Persson gave Jens "Jeb" Bergensten control over the game's development. In the years since its release, it has been ported to several platforms, including smartphones and various video game consoles, primarily by 4J Studios. In 2014, Mojang and the Minecraft intellectual property were purchased by Microsoft for US$2.5 billion. Minecraft has become the best-selling video game of all-time, with over 300 million copies sold and nearly 140 million monthly active players as of 2023.
In Minecraft, players explore a procedurally generated, three-dimensional world with virtually infinite terrain made up of "voxels". Players can discover and extract raw materials, craft tools and items, and build structures, earthworks, and machines. Depending on their chosen game mode, players can fight hostile mobs, as well as cooperate with or compete against other players. The game has two main modes; one being survival mode, where players must acquire resources to survive, and a creative mode where players have unlimited resources and the ability to fly. Several other game modes exist besides the two main ones, such as one that allows players to spectate others and one that plays identically to survival mode, but features permadeath. The game's large community also offers a wide variety of user-generated content, such as modifications, servers, skins, texture packs, and custom maps, which add new game mechanics and possib
Okay thank you.
I'll be honest, I didn't read All of that. But I'm glad Mined Craft doesn't encourage people to feed parrots chocolate that will be bad for them. Even if it is in the form of cube parrot death...
4 notes · View notes
java-full-stack-izeon · 10 months ago
Text
java full stack
A Java Full Stack Developer is proficient in both front-end and back-end development, using Java for server-side (backend) programming. Here's a comprehensive guide to becoming a Java Full Stack Developer:
1. Core Java
Fundamentals: Object-Oriented Programming, Data Types, Variables, Arrays, Operators, Control Statements.
Advanced Topics: Exception Handling, Collections Framework, Streams, Lambda Expressions, Multithreading.
2. Front-End Development
HTML: Structure of web pages, Semantic HTML.
CSS: Styling, Flexbox, Grid, Responsive Design.
JavaScript: ES6+, DOM Manipulation, Fetch API, Event Handling.
Frameworks/Libraries:
React: Components, State, Props, Hooks, Context API, Router.
Angular: Modules, Components, Services, Directives, Dependency Injection.
Vue.js: Directives, Components, Vue Router, Vuex for state management.
3. Back-End Development
Java Frameworks:
Spring: Core, Boot, MVC, Data JPA, Security, Rest.
Hibernate: ORM (Object-Relational Mapping) framework.
Building REST APIs: Using Spring Boot to build scalable and maintainable REST APIs.
4. Database Management
SQL Databases: MySQL, PostgreSQL (CRUD operations, Joins, Indexing).
NoSQL Databases: MongoDB (CRUD operations, Aggregation).
5. Version Control/Git
Basic Git commands: clone, pull, push, commit, branch, merge.
Platforms: GitHub, GitLab, Bitbucket.
6. Build Tools
Maven: Dependency management, Project building.
Gradle: Advanced build tool with Groovy-based DSL.
7. Testing
Unit Testing: JUnit, Mockito.
Integration Testing: Using Spring Test.
8. DevOps (Optional but beneficial)
Containerization: Docker (Creating, managing containers).
CI/CD: Jenkins, GitHub Actions.
Cloud Services: AWS, Azure (Basics of deployment).
9. Soft Skills
Problem-Solving: Algorithms and Data Structures.
Communication: Working in teams, Agile/Scrum methodologies.
Project Management: Basic understanding of managing projects and tasks.
Learning Path
Start with Core Java: Master the basics before moving to advanced concepts.
Learn Front-End Basics: HTML, CSS, JavaScript.
Move to Frameworks: Choose one front-end framework (React/Angular/Vue.js).
Back-End Development: Dive into Spring and Hibernate.
Database Knowledge: Learn both SQL and NoSQL databases.
Version Control: Get comfortable with Git.
Testing and DevOps: Understand the basics of testing and deployment.
Resources
Books:
Effective Java by Joshua Bloch.
Java: The Complete Reference by Herbert Schildt.
Head First Java by Kathy Sierra & Bert Bates.
Online Courses:
Coursera, Udemy, Pluralsight (Java, Spring, React/Angular/Vue.js).
FreeCodeCamp, Codecademy (HTML, CSS, JavaScript).
Documentation:
Official documentation for Java, Spring, React, Angular, and Vue.js.
Community and Practice
GitHub: Explore open-source projects.
Stack Overflow: Participate in discussions and problem-solving.
Coding Challenges: LeetCode, HackerRank, CodeWars for practice.
By mastering these areas, you'll be well-equipped to handle the diverse responsibilities of a Java Full Stack Developer.
visit https://www.izeoninnovative.com/izeon/
2 notes · View notes
roseliejack123 · 2 years ago
Text
Mastering Java: Your Comprehensive Guide to Programming Excellence
Embarking on the journey of mastering Java is akin to entering a realm of endless possibilities. Java, a versatile and widely-utilized programming language, offers a broad spectrum of applications, from crafting web and mobile applications to powering robust enterprise systems. Whether you are a novice in the realm of coding or a seasoned programmer looking to broaden your skill set, the path to proficiency in Java is an exciting one.
Tumblr media
In this comprehensive guide, we will be your guiding light through the intricacies of Java, starting from the foundational basics and progressing to the more advanced aspects of the language. Our objective is to equip you with the knowledge and skills that form a robust and unshakable foundation for your journey into the vibrant world of Java. Fasten your seatbelt as we embark on this exhilarating exploration, charting a course that will empower you to thrive in the ever-evolving landscape of software development.
Here's a 8-step guide to effectively learn Java
Step 1: Setting Up Your Development Environment
Your journey to becoming a proficient Java developer commences with setting up your development environment. The essential components are the Java Development Kit (JDK) and an Integrated Development Environment (IDE) like Eclipse or IntelliJ IDEA. These tools aren't just convenient; they're the gears that will drive your Java programming endeavors. They streamline the coding process, provide useful features, and offer an organized workspace, making your coding experience efficient and enjoyable.
Step 2: The Foundation - Learning the Basics
With your development environment ready, it's time to delve into the fundamental building blocks of Java. Begin by acquainting yourself with data types, variables, operators, and control structures. These are the nuts and bolts of the language, and a solid grasp of these concepts is essential. You'll find an abundance of online tutorials and beginner-friendly Java books to assist you at this stage.
Step 3: Navigating the World of Object-Oriented Programming (OOP)
The object-oriented programming (OOP) approach is well known in Java. To harness the true power of Java, immerse yourself in the world of OOP. Understand the concepts of classes, objects, inheritance, encapsulation, and polymorphism. This knowledge forms the bedrock of Java programming and enables you to design efficient, organized, and scalable code.
Step 4: Mastering Data Structures and Algorithms
Data structures (such as arrays, lists, and sets) and algorithms are the secret sauce behind solving real-world problems efficiently. As you progress, dive into the world of data structures and algorithms. These are the tools that will empower you to handle complex tasks and optimize your code. They're your go-to assets for creating efficient and responsive applications.
Step 5: The Art of Exception Handling
Java boasts a robust exception-handling mechanism. Understanding how to handle exceptions properly is not just an add-on skill; it's a vital aspect of writing reliable code. Exception handling ensures that your code gracefully manages unexpected situations, preventing crashes and delivering a seamless user experience.
Step 6: Exploring Input and Output Operations
In this step, you'll explore the realm of input and output (I/O) operations. Mastering I/O is crucial for reading and writing files, as well as interacting with users. You'll gain the ability to build applications that can efficiently process data and communicate effectively with users.
Step 7: Conquering Multi tasking
Java's support for multi tasking is a significant advantage. Understanding how to manage threads and synchronize their actions is vital for creating concurrent applications. Multithreading is the key to developing software that can handle multiple tasks simultaneously, making your applications responsive and scalable.
Step 8: Building Projects and Real-World Practice
Theory is only as valuable as its practical application. The final step involves applying what you've learned by building small projects. These projects serve as a proving ground for your skills and provide valuable additions to your portfolio. Whether it's a simple application or a more complex project, the act of building is where the real learning takes place.
Tumblr media
As you step into this vibrant realm of Java, remember that continuous learning is the key to staying relevant and effective in the ever-evolving field of software development. Be open to exploring diverse applications, from web development to mobile apps and enterprise solutions, and never underestimate the power of hands-on practice. Building projects, no matter how small, will solidify your knowledge and boost your confidence.
In your quest to master Java, ACTE Technologies stands as a valuable ally. Their expert guidance and comprehensive training programs will sharpen your skills, boost your confidence, and pave the way for a rewarding career in software development. Whether you're embarking on your Java journey or looking to take your skills to the next level, ACTE Technologies offers the resources and support you need to thrive in the world of Java programming.
So, with Java as your trusty companion, and ACTE Technologies as your guide, the possibilities are boundless. Your journey is just beginning, and the world of software development awaits your innovation and expertise. Best of luck on your path to mastering Java!
9 notes · View notes
smoothstack-blog · 1 year ago
Text
How to Prepare for a Coding Interview
Coding interviews are a crucial part of the tech hiring process. As a candidate, you'll need to showcase your technical skills, problem-solving abilities, and understanding of data structures and algorithms. To succeed, it's essential to be well-prepared. In this article, we'll discuss the steps you can take to prepare effectively and increase your chances of getting hired.
Understanding the Coding Interview Process
Before diving into the preparation, it's important to understand the coding interview process. 
These interviews are not just about writing code; they also test your ability to think critically under pressure and explain your reasoning behind the solutions you propose. Interviewers are interested in understanding your approach to problem solving and how you handle challenges in a real-time setting.
The Role of Coding Interviews in Tech Hiring for Candidates
By evaluating your coding abilities, interviewers can determine if you're the right fit for the job and the company culture. However, it's not just a one-sided test. It's also an opportunity for the candidate to learn more about the company and its work environment.
Developers will only be successful in a role if the environment is one that is conducive to how they like to work, collaborate, and engage. It’s a win-win benefit for both candidates and employers if both sides are equally excited at the prospect of working together.
Different Types of Coding Interviews
Coding interviews can vary in format and structure. Some companies may conduct coding interviews in-person, while others prefer remote interviews. Additionally, coding interviews can be divided into different types, such as whiteboard coding exercises, take-home assignments, or pair programming sessions.
Each type of coding interview has its own unique challenges and requirements. Whiteboard coding exercises, for example, test your ability to write code on a whiteboard while explaining your thought process out loud. Take-home assignments, on the other hand, give you the opportunity to work on a coding problem at your own pace and showcase your problem-solving skills in a more relaxed environment. Pair programming sessions involve collaborating with an interviewer to solve a problem together, demonstrating your ability to work effectively in a team setting.
Essential Skills for Coding Interviews
Preparing for a coding interview requires mastering several essential skills. Let's explore these skills in detail.
Programming Languages to Master
Individuals should be proficient  in at least one programming language commonly used in the industry, such as Python, Java, C++, or JavaScript. Understanding the syntax, data types, control structures, and libraries of your chosen language will help you solve coding problems efficiently.
Problem-Solving Skills
Problem-solving skills are an integral part of a coding interview. Being able to approach a problem strategically, break it down into smaller subproblems, and devise an efficient solution is highly valued. Practice solving coding challenges and algorithms to sharpen your problem-solving abilities.
Understanding Data Structures and Algorithms
Data structures and algorithms are the building blocks of computer science. Familiarize yourself with various data structures like arrays, linked lists, stacks, queues, trees, and graphs. Additionally, learn popular algorithms for searching, sorting, and optimization. Understanding these concepts will help you analyze problems and devise optimal solutions.
Pre-Interview Preparation
Embarking on the journey of pre-interview preparation is akin to laying the foundation for a successful career in the tech industry. The diligence and effort you put into honing your skills now will pave the way for future opportunities and growth. Here are a few steps you should take before the interview.
Review Common Coding Questions
Start by researching and reviewing common coding questions asked in interviews. Online platforms like LeetCode or HackerRank offer a vast collection of coding problems categorized by difficulty levels. Spend time solving these problems to familiarize yourself with the question patterns and potential solutions.
Practice on Coding Platforms
Practicing on coding platforms simulates the interview environment and helps improve your coding skills. These platforms often offer interactive coding challenges, enabling you to practice solving problems under time constraints. Engage in coding competitions or take part in mock interviews to get a real feel for the interview process.
Brush Up on Technical Knowledge
Aside from coding skills, brush up on your technical knowledge. Review key concepts related to your preferred programming language, data structures, algorithms, and system design. Understanding these concepts in-depth will help you during technical discussions and coding challenges.
During the Interview
Now let's focus on what to do during the coding interview to maximize your chances of getting hired.
When you enter the interview room, remember that your body language and demeanor also play a significant role in making a positive impression. A firm handshake, good posture, and maintaining eye contact can convey confidence and professionalism. These non-verbal cues can complement your technical skills and create a well-rounded image for the interviewer.
Effective Communication During Coding Interviews
During the interview, effective communication is crucial. Clearly explain your thought process, rationale, and any assumptions you make while solving a problem. Communicating effectively helps the interviewer understand your approach and evaluate your problem-solving abilities.
Moreover, active listening is equally important during coding interviews. Pay close attention to the interviewer's prompts and questions. This demonstrates your ability to process information in real time and adapt your problem-solving strategy accordingly. Engaging in a dialogue rather than a monologue can showcase your collaborative skills and willingness to take feedback.
Demonstrating Your Thought Process
Interviewers are interested in how you approach problems and arrive at solutions, rather than just the end result. Be vocal about your thought process throughout the interview. Explain the steps you're taking, potential optimizations or trade-offs, and any ideas that come to mind. This demonstrates your ability to analyze problems and think critically.
Also, don't hesitate to ask clarifying questions if you encounter ambiguity in the problem statement. Seeking clarification shows your attention to detail and ensures that you and the interviewer are on the same page. It's better to take a moment to clarify the problem than to proceed with a misunderstanding that could lead you down the wrong path.
Handling Unknown Problems
Not all problems presented in coding interviews are familiar or straightforward. Interviewers often assess candidates' ability to handle unknown problems and think on their feet. When faced with unfamiliar problems, stay calm and logical. Break down the problem, identify patterns or similarities to other problems you've solved, and come up with a step-by-step approach.
Remember, the interviewer is not just evaluating your technical skills but also your problem-solving methodology. Demonstrating resilience in the face of uncertainty and showcasing adaptability can leave a lasting impression. Embrace the challenge of unknown problems as an opportunity to showcase your creativity and resourcefulness in problem solving.
In Conclusion
Preparing for a coding interview requires a combination of technical skills, problem-solving abilities, and effective communication. Understanding the coding interview process, mastering essential skills, and thorough preparation will increase your chances of getting hired. Remember, practice makes perfect, so devote enough time to solving coding problems, reviewing concepts, and gaining confidence. 
3 notes · View notes
radar-of-the-stars · 1 year ago
Text
Ranking all portable ways to play Minecraft
Minecraft Java Edition (Steam Deck or other Portable PC): This is basically cheating, but it's super easy to set up on basically any portable PC, It's updated to the latest version, it has betas, it has full mod support, and the controls can be whatever you want thanks to Steam Input
Tumblr media
2. Minecraft Nintendo Switch Edition: this is the last version of Minecraft Legacy Console Edition, so it has all of the love and care that that version had, with the bonus of the Super Mario Mash-Up Pack. This version runs silky smooth with about a 10 chunk render distance, and has the easiest multiplayer on the list, assuming you can find other people with a discontinued version of Minecraft. This version of the game lacks a bunch of features because it was not updated past the Update Aquatic
Tumblr media
3. Minecraft Playstation Vita Edition: I adore the playstation vita, and this is the other portable version of Minecraft Legacy Console Edition, although there are some limitations that come with being on weaker hardware, like Multiplayer being limited to 4 players, a slightly lower render distance (about 5 chunks), and a smaller world size. The game controls better than the Switch version because the Playstation Vita is more ergonomic than the Switch, but other than that it's basically the same game.
Tumblr media
4. Minecraft (Android/IOS): Minecraft on Phones is better than you'd expect, but not much better, it has an 8-20 chunk render distance depending on the speed of your device and how okay you are with frame drops, which speaks to how much less stable this version of Minecraft is compared to the Java and Legacy Console Edtions are. There is mod support, but it's really lacking, and you are updated to the lastest version of the game. However, the touch screens just do not give Minecraft justice, so you would need a bluetooth controller, which have latency on both Android and IOS. Minecraft Bedrock Edition is missing a lot of the love found in the Legacy console versions, which really hurts it in the ranking.
Tumblr media
5. Minecraft New Nintendo 3DS Edition: Despite sounding like a legacy console version of Minecraft, it isn't, this one was developed by Other Oceans Interactive, and thus is also missing a lot of the love found on the Legacy Console Editions. this is also the least updated version of Minecraft on this list being stuck in the World of Color Update, it's also the weakest system Minecraft has ever had an official port for, being about as powerful as an Xbox or Wii, and that leads to a lot of technical limitations. Like the 4 chunk render distance and the fact that the game freezes when it autosaves, it also hangs in some worlds when large structures are being loaded. the controls are about as good as you could reasonably expect for a 3DS, and you get used to them very quickly. The UI is strange and in some parts unintuitive. Multiplayer is about as easy as it can be on a handheld because of the 3DS' Download Play feature.
Tumblr media
6. Minecraft (Nintendo Switch): This is the version of Minecraft that replaced the Legacy Console Edition, and it's bad, the render distance is 7 chunks and even then the game is quite framey, the touch screen literally does nothing, not even the presses buttons on the main menu. Multiplayer is somewhat easy in terms of split screen, but it makes the performance even worse, and the online features are barely there, (except for the marketplace, that works perfectly). The game is unstable, I've played for about 5 hours and in that time I got 7 crashes to the switch's home screen.
Tumblr media
4 notes · View notes