diff options
| -rw-r--r-- | languages/python.md | 195 | ||||
| -rw-r--r-- | tools/git.md | 179 |
2 files changed, 0 insertions, 374 deletions
diff --git a/languages/python.md b/languages/python.md deleted file mode 100644 index 5a3d6a1..0000000 --- a/languages/python.md +++ /dev/null @@ -1,195 +0,0 @@ -Python Documentation: https://docs.python.org -curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py -python get-pip.py - -use this in nvim :help python - -pip --version -Planning to develop some python application or python package your best option is use virtual environments. -Try virtualenv or even conda - -Use poetry much better option to manage application from start to finish. It is a much better option than requirements.txt + setup.py. - - -Another more simple option is use python-virtualenv. This can bring portability to the code and maintain old packages as well. Install it with - -sudo pacman -S python-virtualenv - -and then do this - -virtualenv -p /usr/bin/python3 yourenv -source yourenv/bin/activate -pip install package-name - -When you create this environment yourenv, you will setup pip to install packages only into this environment, not to the entire system. -Basic Syntax -Comments - -python - -# This is a single-line comment - -""" -This is a -multi-line comment -""" - -Variables - -python - -# Declaration and initialization -x = 10 - -# Declaration without initialization -y = None - -Data Types -Data Type Description -int Integer Represents whole numbers without a fractional component -float Float Represents real numbers with a single-precision format -str String Represents a sequence of characters -bool Boolean Represents a logical value, either True or False -list List Represents an ordered, mutable collection of elements -tuple Tuple Represents an ordered, immutable collection of elements -dict Dictionary Represents a collection of key-value pairs -set Set Represents an unordered collection of unique elements -Arithmetic Operators - - Addition: x + y - Subtraction: x - y - Multiplication: x * y - Division: x / y - Modulus: x % y - Exponentiation: x ** y - Floor Division: x // y - -String Operations - -python - -string = "Hello, World!" - -len(string) # Length of string -string.upper() # Convert to uppercase -string.lower() # Convert to lowercase -string.strip() # Remove whitespace -string.split(",") # Split by comma - -Control Flow - - Conditional Statements - -python - -if condition: - # Code to execute if condition is true -elif another_condition: - # Code to execute if another_condition is true -else: - # Code to execute if neither condition is true - - Loops - -python - -for item in iterable: - # Code to execute for each item in iterable - -while condition: - # Code to execute while condition is true - -Functions - -python - -def function_name(parameter1, parameter2): - # Code to execute - return result # Optional return statement - -Data Structures - - Lists - -python - -my_list = [1, 2, 3, 4, 5] - -my_list.append(6) # Add item to the end of the list -my_list.insert(0, 0) # Insert item at a specific index -my_list.remove(3) # Remove item from the list -my_list.pop() # Remove and return the last item -my_list.sort() # Sort the list - - Dictionaries - -python - -my_dict = {"key1": "value1", "key2": "value2"} - -my_dict["key3"] = "value3" # Add a new key-value pair -del my_dict["key2"] # Delete a key-value pair -my_dict.keys() # Get all keys -my_dict.values() # Get all values -my_dict.items() # Get all key-value pairs - - Sets - -python - -my_set = {1, 2, 3} - -my_set.add(4) # Add an element to the set -my_set.remove(3) # Remove an element from the set - - Python is case-sensitive (e.g., variable and Variable are different). - Python uses indentation (usually four spaces) to define code blocks. Indentation is important for the structure and readability of your code. - Statements are terminated with a newline. However, you can use a backslash (\) to continue a statement to the next line. - Python follows the "PEP 8" style guide, which suggests guidelines for writing Python code. Some key points include: - Use descriptive variable and function names. - Use lowercase letters with words separated by underscores for variable and function names (e.g., my_variable, my_function). - Use uppercase letters with words separated by underscores for constants (e.g., MY_CONSTANT). - Use spaces around operators and after commas (e.g., x = 5 + 2, my_function(arg1, arg2)). - Limit line length to 79 characters. - Python supports both single-quoted (') and double-quoted (") strings. Use whichever is more appropriate for your case, but be consistent. - Python uses zero-based indexing for lists, tuples, and strings. The first element is accessed with index 0. - Python allows for multiple assignment in a single line, e.g., x, y = 10, 20. - Python has no mandatory declaration of variables. Variables are created when a value is assigned to them. - Python uses the None value to represent the absence of a value or a null value. - Python has a dynamic type system, meaning you can reassign variables to different types. - Python is an interpreted language, which means it is not compiled but executed line by line. - Use meaningful comments to explain the purpose and functionality of your code. - Python uses the # symbol to denote single-line comments. - Use docstrings (multi-line comments enclosed in triple quotes) to provide documentation for functions, classes, and modules. - Use the backslash (\) to continue a statement onto the next line when necessary. - Use parentheses to group expressions and clarify the order of operations. - Avoid using single-character variable names, except in cases where the purpose is clear (e.g., loop counters). - Follow the DRY (Don't Repeat Yourself) principle and avoid duplicating code. Instead, use functions or loops to encapsulate and reuse code. - Use meaningful names for variables, functions, and classes that reflect their purpose and intent. - Use snake_case naming convention for functions, variables, and modules (e.g., my_function, my_variable, my_module.py). - Use CamelCase naming convention for classes (e.g., MyClass). - Use appropriate spacing around operators and after commas to enhance readability. - Follow proper code formatting by using consistent indentation and line breaks. - Avoid unnecessary or excessive code comments that only restate the code itself. - Make use of white space to improve code readability, such as adding blank lines between functions or sections of code. - Use built-in functions and libraries whenever possible to leverage existing functionality and improve code efficiency. - Use a consistent naming convention for constants, such as using uppercase letters with underscores (e.g., MAX_VALUE). - Avoid using global variables whenever possible, as they can lead to code complexity and make debugging difficult. -curl -OJL https://docs.python.org/3/archives/python-3.9.7-docs-html.tar.bz2 - -tar -xvf python-3.9.7-docs-html.tar.bz2 -After extraction, you can navigate to the extracted directory and open the index.html file in a web browser to access the offline Python documentation. -or to generate the documentation for a specific Python module or package, use the following command: - -pydoc -w module_name - -Replace module_name with the name of the module or package for which you want to generate documentation. For example, to generate documentation for the os module, you can use: - - -pydoc -w os - -Additionally, you can use the -p option with pydoc to launch a local web server and view the documentation in your web browser. For example: - - -pydoc -p 5000 -This command will start a web server on port 5000, and you can access the documentation by opening your browser and navigating to http://localhost:5000. diff --git a/tools/git.md b/tools/git.md deleted file mode 100644 index 1616b31..0000000 --- a/tools/git.md +++ /dev/null @@ -1,179 +0,0 @@ -## Dotfiles -#### Creating a dotfiles git repo - 1. Intialize git and create a folder named ~/.cfg - ```bash - $ git init --bare $HOME/.cfg - ``` - 2. Put this in your .bashrc or .zsh to use `config` as a dotfiles alias. - ```bash - $ alias config='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME' - ``` - - - 3. Make sure to ignore the folder we're going use to clone. - ```bash - $ echo ".cfg" >> .gitignore - ``` - 4. Set flag to not show untracked files - ```bash - $ config config --local status.showUntrackedFiles no - ``` - 5. Replacing git with our newly created config alias we can version control our - dotfiles. - ```bash - $ config status - $ config add .bashrc - $ config commit -m "Added bashrc" - $ config push - ``` -#### Installing onto a new system - 1. Avoid weird behaviour/recursion issues when .cfg tries to track itself - ```bash - $ echo ".cfg" >> .gitignore - ``` - 2. Clone the repo - ```bash - $ git clone --bare <remote-git-repo-url> $HOME/.cfg - ``` - 3. Set up the alias 'config' - ```bash - $ alias config='/usr/bin/git --git-dir=<path to .cfg’s Git directory> --work-tree=$HOME' - alias config='git --git-dir=$HOME/.cfg --work-tree=$HOME' - ``` - 4. Set local configuration into .cfg to ignore untracked files - ```bash - $ config config --local status.showUntrackedFiles no - ``` - 5. Checkout - ```bash - $ config checkout - ``` -git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main -git branch -u origin/branchName -or -git branch --set-upstream-to=origin/master main -git update-ref refs/heads/master origin/master - -You can also set it with a push -git push -u origin master -git push --set-upstream origin master -#### Use git subtree to sync other repos into dotfiles - 1. First make sure dotfiles is up-to date or commit/push/reset all changes - otherwise this error message will show: `Working tree has modifications. Cannot add.` - ```bash - $ config reset --hard origin/main - ``` - Also NOTE: the prefix (subdirectory in which you will add the subtree) cannot already exist therefore delete/backup locally. - - - 2. Add the repo's file path and it's remote url: -NOTE: Can use the `--squash` flag to omit storing of entire history of subproject into main repo but if used then the flag will always have to be used with the given repo/subtree and it's commands - ```bash - $ config subtree add --prefix /path/to/file <remote-git-repo-url> <branch> - # Example: - $ config subtree add --prefix .config/nvim https://github.com/srdusr/nvim.git main --squash - ``` - - - 3. Update to sync/show any changes into dotfiles (upstream repo): - ```bash - $ config subtree pull --prefix /path/to/file <remote-git-repo-url> main - ``` - - 4. Finally push onto remote repository: - ```bash - $ config push - ``` - 5. Optional aliases to put into .gitconfig: - ```bash - [alias] - sba ="!f() { git subtree add --prefix $2 $1 main; }; f" - sbu ="!f() { git subtree pull --prefix $2 $1 main; }; f" - # Or use --squash if prefered - sba ="!f() { git subtree add --prefix $2 $1 main --squash; }; f" - sbu ="!f() { git subtree pull --prefix $2 $1 main --squash; }; f" - # Example: - $ config sbu https://github.com/srdusr/nvim.git .config/nvim #--squash - ``` - -- - - - -## Basic commands -Intialize a git repository in the root of the folder: -```bash -$ git init -``` -See which files git knows exist: -```bash -$ git status -``` -Add a new file to the repo: -```bash -$ git add <file> -``` -Create a commit with a message about the commit: -```bash -$ git commit -m <file> -``` -Push the changes/commits onto repo: -```bash -$ git push -u origin <branch> -``` -Reset the local main branch to remote repository aka... -Delete the most recent commit, destroying the work you've done: -```bash -$ git reset --hard origin/main -``` -Delete the most recent commit, keeping the work you've done: -```bash -$ git reset --soft origin/<branch> -``` -Allow unrelated histories when two unrelated projects are merged/unaware of each -other's existence: -```bash -$ git pull origin <branch> --allow-unrelated-histories -``` -Diff between commits -``` -$ git log -$ git diff (checkout_id):file.txt file.txt -or -$ git diff <commit_id1> <commit_id2> -or -$ git difftool <commit_id1> <commit_id2> - -``` - - -If the top commit is pointed to by HEAD then you can do something like this: - -commit1 -> HEAD -commit2 -> HEAD~1 -commit3 -> HEAD~2 - -Diff between the first and second commit: - -git diff HEAD~1 HEAD - -Diff between first and third commit: - -git diff HEAD~2 HEAD - -Diff between second and third commit: - -git diff HEAD~2 HEAD~1 -- - - -#### Miscellaneous -Find out size of a repo before cloning it -```bash -$ curl -s https://api.github.com/repos/{orgname/username}/{repo_name} | jq '.size' | numfmt --to=iec --from-unit=1024 - -``` ---- -#### Trouble-shooting -fatal: ambiguous argument 'origin': unknown revision or path not in the working tree -```bash -$ git fetch origin main:refs/remotes/origin/main -``` - ---- |