读《Effective Programmer》

本文分享了《Effective Programmer》一书中的三条核心法则:合理分配注意力资源,聚焦任务本质,以及遵循80-10-10需求原则。通过这些法则帮助开发者提升工作效率和创造力。

最近在看 《Effective Programmer》,不错,确实不错的一本书,记些笔记,不断鞭笞自己前进。
1、注意力是最重要的生产力之源,不要浪费注意力到那些可以自动化的工作上。虽然可以用10分钟手工解决的问题,可以使用1个小时来写段代码实现,这是提高创造力,高效利用注意力的重要方法,并且可以为以后类似问题提供解决方法。
2、关注本质,去除附属。很多工作精力几乎浪费在了无关的附属问题上,应该停下来,思考一下最本质的需要。
3、80-10-10原则。客户80%的需求是可以轻松搞定,10%需要付出很大精力搞定,还有10%几乎不可能完成,要学会取舍。


<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
"""create user and character tables Revision ID: d9195a797c20 Revises: Create Date: 2025-11-11 17:11:40.317544 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import mysql import sqlmodel # revision identifiers, used by Alembic. revision: str = 'd9195a797c20' down_revision: Union[str, Sequence[str], None] = None branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: """Upgrade schema.""" # ### commands auto generated by Alembic - please adjust! ### op.drop_index(op.f('user_id'), table_name='user_info') op.drop_constraint(op.f('user_info_ibfk_1'), 'user_info', type_='foreignkey') op.create_foreign_key(None, 'user_info', 'users', ['user_id'], ['id']) op.alter_column('users', 'account', existing_type=mysql.VARCHAR(collation='utf8mb4_unicode_ci', length=50), type_=sqlmodel.sql.sqltypes.AutoString(length=100), existing_nullable=False) op.alter_column('users', 'password', existing_type=mysql.VARCHAR(collation='utf8mb4_unicode_ci', length=100), type_=sqlmodel.sql.sqltypes.AutoString(length=255), existing_nullable=False) # ### end Alembic commands ### def downgrade() -> None: """Downgrade schema.""" # ### commands auto generated by Alembic - please adjust! ### op.alter_column('users', 'password', existing_type=sqlmodel.sql.sqltypes.AutoString(length=255), type_=mysql.VARCHAR(collation='utf8mb4_unicode_ci', length=100), existing_nullable=False) op.alter_column('users', 'account', existing_type=sqlmodel.sql.sqltypes.AutoString(length=100), type_=mysql.VARCHAR(collation='utf8mb4_unicode_ci', length=50), existing_nullable=False) op.drop_constraint(None, 'user_info', type_='foreignkey') op.create_foreign_key(op.f('user_info_ibfk_1'), 'user_info', 'users', ['user_id'], ['id'], ondelete='CASCADE') op.create_index(op.f('user_id'), 'user_info', ['user_id'], unique=True) # ### end Alembic commands ### PS F:\Programmer\python\MyAi> alembic revision --autogenerate -m "init tables" INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. ERROR [alembic.util.messaging] Target database is not up to date. FAILED: Target database is not up to date. PS F:\Programmer\python\MyAi> alembic upgrade head INFO [alembic.runtime.migration] Context impl MySQLImpl. INFO [alembic.runtime.migration] Will assume non-transactional DDL. INFO [alembic.runtime.migration] Running upgrade -> d9195a797c20, create user and character tables Traceback (most recent call last): File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "E:\python\Lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) ~~~~~~~~~~^^^ File "E:\python\Lib\site-packages\pymysql\connections.py", line 575, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\pymysql\connections.py", line 826, in _read_query_result result.read() ~~~~~~~~~~~^^ File "E:\python\Lib\site-packages\pymysql\connections.py", line 1203, in read first_packet = self.connection._read_packet() File "E:\python\Lib\site-packages\pymysql\connections.py", line 782, in _read_packet packet.raise_for_error() ~~~~~~~~~~~~~~~~~~~~~~^^ File "E:\python\Lib\site-packages\pymysql\protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "E:\python\Lib\site-packages\pymysql\err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) pymysql.err.OperationalError: (1553, "Cannot drop index 'user_id': needed in a foreign key constraint") The above exception was the direct cause of the following exception: Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "E:\python\Scripts\alembic.exe\__main__.py", line 6, in <module> sys.exit(main()) ~~~~^^ File "E:\python\Lib\site-packages\alembic\config.py", line 1033, in main CommandLine(prog=prog).main(argv=argv) ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^ File "E:\python\Lib\site-packages\alembic\config.py", line 1023, in main self.run_cmd(cfg, options) ~~~~~~~~~~~~^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\alembic\config.py", line 957, in run_cmd fn( ~~^ config, ^^^^^^^ *[getattr(options, k, None) for k in positional], ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **{k: getattr(options, k, None) for k in kwarg}, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\alembic\command.py", line 483, in upgrade script.run_env() ~~~~~~~~~~~~~~^^ File "E:\python\Lib\site-packages\alembic\script\base.py", line 545, in run_env util.load_python_file(self.dir, "env.py") ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\alembic\util\pyfiles.py", line 116, in load_python_file module = load_module_py(module_id, path) File "E:\python\Lib\site-packages\alembic\util\pyfiles.py", line 136, in load_module_py spec.loader.exec_module(module) # type: ignore ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ File "<frozen importlib._bootstrap_external>", line 1026, in exec_module File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed File "F:\Programmer\python\MyAi\alembic\env.py", line 63, in <module> run_migrations_online() ~~~~~~~~~~~~~~~~~~~~~^^ File "F:\Programmer\python\MyAi\alembic\env.py", line 57, in run_migrations_online context.run_migrations() ~~~~~~~~~~~~~~~~~~~~~~^^ File "<string>", line 8, in run_migrations File "E:\python\Lib\site-packages\alembic\runtime\environment.py", line 946, in run_migrations self.get_context().run_migrations(**kw) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File "E:\python\Lib\site-packages\alembic\runtime\migration.py", line 627, in run_migrations step.migration_fn(**kw) ~~~~~~~~~~~~~~~~~^^^^^^ File "F:\Programmer\python\MyAi\alembic\versions\d9195a797c20_create_user_and_character_tables.py", line 24, in upgrade op.drop_index(op.f('user_id'), table_name='user_info') ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<string>", line 8, in drop_index File "<string>", line 3, in drop_index File "E:\python\Lib\site-packages\alembic\operations\ops.py", line 1142, in drop_index return operations.invoke(op) ~~~~~~~~~~~~~~~~~^^^^ File "E:\python\Lib\site-packages\alembic\operations\base.py", line 441, in invoke return fn(self, operation) File "E:\python\Lib\site-packages\alembic\operations\toimpl.py", line 121, in drop_index operations.impl.drop_index( ~~~~~~~~~~~~~~~~~~~~~~~~~~^ operation.to_index(operations.migration_context), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **kw, ^^^^^ ) ^ File "E:\python\Lib\site-packages\alembic\ddl\impl.py", line 464, in drop_index self._exec(schema.DropIndex(index, **kw)) ~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\alembic\ddl\impl.py", line 246, in _exec return conn.execute(construct, params) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1418, in execute return meth( self, distilled_parameters, execution_options or NO_OPTIONS, ) File "E:\python\Lib\site-packages\sqlalchemy\sql\ddl.py", line 180, in _execute_on_connection return connection._execute_ddl( ~~~~~~~~~~~~~~~~~~~~~~~^ self, distilled_params, execution_options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1529, in _execute_ddl ret = self._execute_context( dialect, ...<4 lines>... compiled, ) File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( ~~~~~~~~~~~~~~~~~~~~~~~~~^ dialect, context, statement, parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ e, str_statement, effective_parameters, cursor, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "E:\python\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( ~~~~~~~~~~~~~~~~~~~~~~~^ cursor, str_statement, effective_parameters, context ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "E:\python\Lib\site-packages\sqlalchemy\engine\default.py", line 941, in do_execute cursor.execute(statement, parameters) ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\pymysql\cursors.py", line 153, in execute result = self._query(query) File "E:\python\Lib\site-packages\pymysql\cursors.py", line 322, in _query conn.query(q) ~~~~~~~~~~^^^ File "E:\python\Lib\site-packages\pymysql\connections.py", line 575, in query self._affected_rows = self._read_query_result(unbuffered=unbuffered) ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "E:\python\Lib\site-packages\pymysql\connections.py", line 826, in _read_query_result result.read() ~~~~~~~~~~~^^ File "E:\python\Lib\site-packages\pymysql\connections.py", line 1203, in read first_packet = self.connection._read_packet() File "E:\python\Lib\site-packages\pymysql\connections.py", line 782, in _read_packet packet.raise_for_error() ~~~~~~~~~~~~~~~~~~~~~~^^ File "E:\python\Lib\site-packages\pymysql\protocol.py", line 219, in raise_for_error err.raise_mysql_exception(self._data) ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^ File "E:\python\Lib\site-packages\pymysql\err.py", line 150, in raise_mysql_exception raise errorclass(errno, errval) sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1553, "Cannot drop index 'user_id': needed in a foreign key constraint") [SQL: DROP INDEX user_id ON user_info] (Background on this error at: https://sqlalche.me/e/20/e3q8)
最新发布
11-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值